Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQl触发器出错,有没有更好的编写方法?_Mysql_Sql_Triggers - Fatal编程技术网

MySQl触发器出错,有没有更好的编写方法?

MySQl触发器出错,有没有更好的编写方法?,mysql,sql,triggers,Mysql,Sql,Triggers,您好,当我使用下面的触发器时,出现以下错误: inser into shift -> values<15,3, '08:00:00','14:00:00'>; ERROR 1048 <23000>: Column 'CashierCode' can not be null 似乎列“CashierCode”被定义为非空。您确定此列具有非空值吗 看起来您的触发器正在尝试向该列插入空值。更改表定义或在触发器中提供有效值。旁注:它应该是new.CashierCode,而

您好,当我使用下面的触发器时,出现以下错误:

inser into shift
-> values<15,3, '08:00:00','14:00:00'>;

ERROR 1048 <23000>: Column 'CashierCode' can not be null

似乎列“CashierCode”被定义为非空。您确定此列具有非空值吗


看起来您的触发器正在尝试向该列插入空值。更改表定义或在触发器中提供有效值。

旁注:它应该是
new.CashierCode
,而不是
new,CashierCode
。这只是一个印刷错误吗?谢谢,是的,我打错了是的,出纳代码被定义为非空。我怎样才能改变它呢?如果不是空值,那么您需要在系统中为“not”值制定一个约定。有些使用-1或0。。。如果你是从头开始设计这个系统,你可以修改你的表定义,在“CashierCode”列中允许空值。是的,答案似乎是“因为你告诉MySQL,CashierCode字段永远不能为空”@doublen:如果可以为空,使用
ALTER TABLE
ALTER TABLE\u name CHANGE COLUMN CashierCode CashierCode[与以前类型相同]NULL你能告诉我这不是价值观,请只是为了提高我的知识?
DELIMITER @
create trigger shist_start
before insert on shift
for each row
begin
if(new.CashierCode not in(
select w.EmployeeCode from WorksOn as w
join shop as s on w.ShopCode = s.ShopCode
join CashMachine as c on s.ShopCode = c.ShopCode
where c.CashMachineID=new.CashMachineID ))
then set new.CashierCode = NULL;
end if;
end;