这是我写的。我是Sql的初学者。
CREATE TABLE pahla( id integer, name varchar(15), prof varchar(15), kind_id integer, worth VARCHAR(10) NOT NULL );
ALTER TABLE pahla ADD PRIMARY KEY (id);
CREATE TRIGGER EMPTYISNULL BEFORE INSERT ON pahla FOR EACH ROW BEGIN IF worth = '' THEN SET worth = NULL END IF; END;
INSERT into pahla VALUES(2,'Sam','Writer',1,'');
我希望将“值”列中的空格视为NULL,以便不会将其插入表中。但是,无法触发我的触发器。有办法解决这个问题吗?
Failed 4:38 PM ER_UNKNOWN_SYSTEM_VARIABLE: Unknown system variable 'worth'
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您的错误与您以错误的方式引用列的价值有关。
用于在插入触发器之前分配列值,您需要新建
IF NEW.worth = '' THEN SET NEW.worth = NULL END IF;
但是,您还应该更改表定义,并删除值得的列的NOT NULL约束
问题来源于stack overflow