Mysql 阻止将空值输入数据库
我有一个数据库,我正在通过应用程序访问它。该应用程序接受所有类型的值,包括Blank(我的错误:(应该只在我的应用程序中限制它)。我想运行一个脚本,以便它阻止空值进入我的数据库 例如:Books是我的数据库,包含作者、价格、标题等列 我想阻止空作者姓名条目, 我使用了如下所示的触发器 分隔符|Mysql 阻止将空值输入数据库,mysql,sql,Mysql,Sql,我有一个数据库,我正在通过应用程序访问它。该应用程序接受所有类型的值,包括Blank(我的错误:(应该只在我的应用程序中限制它)。我想运行一个脚本,以便它阻止空值进入我的数据库 例如:Books是我的数据库,包含作者、价格、标题等列 我想阻止空作者姓名条目, 我使用了如下所示的触发器 分隔符| CREATE TRIGGER trigger1 AFTER INSERT ON books FOR EACH ROW BEGIN IF NEW.author = '' THEN
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 ;
此脚本满足阻止空值的目标,但存在一些不一致性(在某一点之后,我根本无法访问数据库,我既不能输入值也不能访问值)。
有谁能告诉我可能有什么问题。有多种方法可以实现这一点-
1) 将触发器更改为“插入前” 如果作者名为null,则返回false 这将阻止应用程序插入空白作者姓名 2) 更改表架构,并在作者名称中添加一个不为null的约束
请参阅是否有任何错误消息?我认为这不是个好主意。。最好在应用程序中实现该约束。是否要丢弃
NULL
值或空字符串'
?需要丢弃空字符串。通过在插入之前使用,会出现相同的问题,通过更改架构如何阻止空值?ALTER TABLE BOOK ADD CHECK(作者!='')你的申请是用哪种语言写的?如果作者姓名为空或为空,则检查作者姓名并跳过插入会更简单。我的应用程序使用C#,我知道在代码中执行此操作的方法,但我现在无法在我的应用程序中进行更改,因此,您需要一个替代方案。@harin04请将一个答案标记为已接受,如果它对您有所帮助或回答了您的问题,那么它将对将来访问该网站的其他用户有所帮助。你的其他问题也是如此——你没有接受任何一个问题的答案