创建MySql触发器并通过插入表设置变量中断
我创建了这样一个触发器来定义变量:创建MySql触发器并通过插入表设置变量中断,mysql,Mysql,我创建了这样一个触发器来定义变量: DELIMITER $$ CREATE TRIGGER tt after insert on adventureworks.test for each row BEGIN set @mytime=+1; END$$ DELIMITER ; 在具有以下说明的表格上: 'id', 'int(11)', 'NO', 'PRI', NULL, 'auto_increment' 'testy', 'tinytext', 'YES', '', NULL
DELIMITER $$
CREATE TRIGGER tt after insert on adventureworks.test
for each row
BEGIN
set @mytime=+1;
END$$
DELIMITER ;
在具有以下说明的表格上:
'id', 'int(11)', 'NO', 'PRI', NULL, 'auto_increment'
'testy', 'tinytext', 'YES', '', NULL, ''
现在,当我想像这样插入到这个表中时会发生什么:
insert into test values (null, "sa") ;
我得到这个错误:
Error Code: 1136. Column count doesn't match value count at row 1
为什么会这样?为什么设置一个显然不应该对我的表列产生任何影响的变量会导致这个问题?对于insert语句,您还需要指定要提供值的列。此外,触发器也没有用。该变量将在触发时过期completes@SloanThrasher,在MySQL中,前缀为
@
的变量具有会话范围,而不是语句范围。触发器完成后,它将保留其值。@nina_dev,我按照您的描述测试了您的表和触发器,您显示的插入操作不会出错。我建议这个表实际上有比你想象的更多的列。运行显示创建表adventureworks。测试以确认。