smn*_*ane 10 mysql triggers constraints
我想在MySQL中使用CHECK约束,但它不受支持.(与其他RDBMS不同,它会理解但不强制执行CHECK.)
我看过一些触发器的解决方法.但他们倾向于为相关字段设置默认值,而不是返回错误.
如果不满足条件,是否可以构造一个返回错误的触发器?
最终我想要一个复制CHECK约束的触发器.
abh*_*sia 14
当您更新数据时:
delimiter $$
create trigger chk_stats1 before update on stats
for each row
begin
if new.month>12 then
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot add or update row: only';
end if;
end;
$$
Run Code Online (Sandbox Code Playgroud)
当您插入数据时:
delimiter $$
create trigger chk_stats before insert on stats
for each row
begin
if new.month>12 then
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot add or update row: only';
end if;
end;
$$
Run Code Online (Sandbox Code Playgroud)
这些触发器将作为检查约束,在插入或更新之前工作并检查月份,如果month> 12给出错误.
尝试以下语法
CREATE TRIGGER mytabletriggerexample
BEFORE INSERT
FOR EACH ROW BEGIN
IF(NEW.important_value) < (fancy * dancy * calculation) THEN
DECLARE dummy INT;
SELECT Your meaningful error message goes here INTO dummy
FROM mytable
WHERE mytable.id=new.id
END IF; END;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12527 次 |
| 最近记录: |