我想保护日期列中的现有日期不被覆盖。因此,不允许更新日期列,仅当现有字段值为 NULL(日期列默认为 NULL)时才允许插入。是triggers http://dev.mysql.com/doc/refman/5.0/en/triggers.html在 MySQL 中实现这一点的唯一方法是什么?如果是这样,下面的触发器会起作用吗?
create trigger date_check
before insert, update on date
for each row
begin
if(date IS NOT NULL) then
SIGNAL 'date already set'
end if ;
end ;
背景:我有一个包含关键日期的表,由于用户错误而意外更改了该日期。我在用户界面中进行了一些检查,以防止这种情况再次发生,但如果可能的话,希望直接与数据库建立另一层安全性。
是的,在 MySQL 中触发器是执行此操作的唯一方法。 MySQL 不支持约束。
你的触发器不完全正确。首先,你有update on date
,但这应该是update on <table name>
。其次,您正在检查用于的日期值update。也许你的意思是:
create trigger date_check_update
before update on <the table name goes here>
for each row
begin
if (old.date IS NOT NULL) then
SIGNAL 'date already set'
end if ;
end;
An insert
在这种情况下触发没有意义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)