我有一张 table
CREATE TABLE `enum_test` (
`id` int(10) default NULL,
`value` enum('YES','NO') NOT NULL default 'YES'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
然后执行下面的查询
INSERT INTO enum_test(id) VALUES (2); set 'YES' in `enum` field.
INSERT INTO enum_test(id,value) VALUES (2,1); set 'YES' in `enum` field.
但是
//why below query set blank value in enum field??
INSERT INTO enum_test(id, value) VALUES (2, 'YESS');
我希望如果用户在 enum
字段中插入一个不存在的值,那么它应该设置 enum
的默认值
怎么做?
最佳答案
使用触发函数,像这样:
mysql> delimiter //
mysql> CREATE TRIGGER upd_check BEFORE UPDATE ON enum_test
-> FOR EACH ROW
-> BEGIN
-> IF (NEW.value != 'YES' AND NEW.value != 'NO')
-> SET NEW.value = '';
-> END IF;
-> END;//
mysql> delimiter ;
更多关于触发器的信息:Mysql manual, trigger syntax
编辑: 正如所建议的那样,也可以定义存储过程并从触发器调用 if,我认为这对于数据库的可维护性更好。 触发器是数据库定义的一部分,因此您可以使用 CREATE TABLE 语句将其添加到任何 sql 文件。
关于mysql - 如果我们在 MYSQL 中插入无效枚举值,如何设置默认枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5441184/