我想把mysql中的一个表里的字段添加上判定条件,比如必须是以@163.com结尾的邮箱才能插入,求高手

2024-12-22 22:27:18
推荐回答(4个)
回答1:

如果楼主只是考虑下这样做,无妨,有想法。但是这样做,个人认为劳时劳力,但结果还不会很理想,因为数据库本来就是对插入数据进行存储和管理,但是现在楼主试图让其对数据插入进行筛选,貌似越权了。这些操作应该时数据库操作的逻辑代码来做的,数据库来做会降低开发效率。

其他数据库记得可以用check来做,但是mysql好像check没作用

回答2:

尝试 CHECK 来处理
例如下面的 建表语句。

mysql> CREATE TABLE test_create_tab4 (
-> id INT PRIMARY KEY,
-> val VARCHAR(10) NOT NULL,
-> val2 INT
-> CHECK(val2 >= 0 AND val2 <= 100)
-> );
-> //
Query OK, 0 rows affected (0.06 sec)

对于 email 字段,@163.com结尾的

可以 CHECK ( RIGHT(email , 8) = '@163.com')

PS:
折腾好了以后,最好测试测试看看,CHECK 不一定 有效。

-----

悲剧,刚才又去查询了一下,原来 mysql 不支持 CHECK ...
能编译成功,但是check约束不起作用

回答3:

WHERE emailAddress LIKE '%@163.com%

先把@163.com的结果筛选出来再插入不就得了

回答4:

还是在输入窗口判断吧。那样出错了,可以实时提醒输入者!