表:项目 创建表:
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 items( itemname, itemnumber) values ( 'xyz', 1 );
非常感谢任何帮助,谢谢!
答案 0 :(得分:0)
它是
insert INTO items( itemname, itemnumber) values ( 'xyz', 1 );
另外,由于您已将ite_id
设为NOT NULL
,因此无法使用set new.ite_id = null;
答案 1 :(得分:0)
对于自动递增的主键字段,您可以在插入时传递NULL值。 MySQL自动分配自动生成的值。向插入之前设置NULL不是错误。因此触发器不会触发错误。
示例:
insert into items( ite_id, ... ) values ( null, ... );
上述语句有效且有效,因为ite_id
字段是自动增量的主键。
答案 2 :(得分:0)
你的ite_ID不是null,你想用你的触发器将它设置为null,旁边它是自动增量,所以你不能“控制”所有值分配给那个字段,IE它不会覆盖值