mysql触发器在insert上不起作用
表:项目 创建表:mysql触发器在insert上不起作用,mysql,Mysql,表:项目 创建表: CREATE TABLE `items` ( `ite_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `itemName` varchar(40) DEFAULT NULL, `itemNumber` int(10) unsigned NOT NULL, PRIMARY KEY (`ite_id`), UNIQUE KEY `itemName` (`itemName`) ) ENGINE=InnoDB AUTO
CREATE TABLE `items` (
`ite_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`itemName` varchar(40) DEFAULT NULL,
`itemNumber` int(10) unsigned NOT NULL,
PRIMARY KEY (`ite_id`),
UNIQUE KEY `itemName` (`itemName`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
delimiter |
create trigger item_beforeinsert before insert on items
for each row begin
if new.itemNumber < 50 then
set new.ite_id = null;
end if;
end;
|
非常感谢您的帮助,谢谢 应该是
insert INTO items( itemname, itemnumber) values ( 'xyz', 1 );
此外,由于已将
ite\u id
设置为notnull
,因此不能使用set new.ite\u id=NULL代码>对于自动递增的主键字段,插入时可以传递空值。MySQL自动分配自动生成的值。在插入之前为其设置NULL不是错误。因此触发器没有触发错误
示例:
insert into items( ite_id, ... ) values ( null, ... );
上述声明有效且有效,因为ite\u id
字段是具有自动递增功能的主键。您的ite\u id不是空的,您希望使用触发器将其设置为空,除此之外,它是自动递增的,因此您将无法“控制”分配给该字段的所有值,即它不会覆盖值否,这不是问题所在。插入正在工作,但触发器未执行。set new.ite_id=null应该会导致停止插入的错误。是的,这就是我要查找的。触发器在非自动递增的列上使用时将起作用。
insert into items( ite_id, ... ) values ( null, ... );