mysql触发器不能插入

时间:2012-06-25 17:22:59

标签: 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_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 );

非常感谢任何帮助,谢谢!

3 个答案:

答案 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它不会覆盖值