我有一个数据库,我通过一个应用程序访问它。该应用程序采取所有类型的值,包括空白(我的错误:(应该只在我的应用程序中约束这个)。我想运行一个脚本,它阻止将空值输入我的数据库。
例如:Books是我的数据库,其中包含作者,价格,标题 我想阻止空作者姓名输入, 我使用了如下所示的触发器;
DELIMITER |
CREATE TRIGGER trigger1 AFTER INSERT ON books
FOR EACH ROW BEGIN
IF NEW.author = '' THEN
delete from books where author = '';
END IF;
END;
|books
DELIMITER ;
这个脚本符合阻止空值的目的,但是有一些不一致性(在某些点之后我根本无法访问数据库,我既不能输入值也不能访问它)。 任何人都可以告诉我可能是什么问题。
答案 0 :(得分:0)
有多种方法可以实现这一点 -
1)将触发器更改为BEFORE INSERT
如果作者名称为null,则返回false
这将阻止应用程序插入空白作者姓名。
2)更改表模式,并向作者名称添加一个非null的约束。