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, ... );