相关疑难解决方法(0)

一个约束,以防止在MySQL中插入空字符串

这个问题中,我学会了如何防止插入NULL值.但是,不幸的是,无论如何都插入了一个空字符串.除了在PHP方面阻止这一点,我想使用类似数据库约束的东西来防止这种情况.当然,对应用程序方面的检查是必要的,但我希望它是双方的.

我被告知,无论什么应用程序与您的数据库通信,它都不应该在其中插入基本上错误的数据.所以...

CREATE TABLE IF NOT EXISTS tblFoo (
  foo_id int(11) NOT NULL AUTO_INCREMENT,
  foo_test varchar(50) NOT NULL,
  PRIMARY KEY (foo_id)
);
Run Code Online (Sandbox Code Playgroud)

仍然允许我这样插入:

INSERT INTO tblFoo (foo_test) VALUES ('');
Run Code Online (Sandbox Code Playgroud)

我想阻止它.

mysql constraints

31
推荐指数
2
解决办法
2万
查看次数

如何在MySql触发器中中止INSERT操作?

我有一个包含url的表和一个表示其参数的字符串.问题是我想要一个url和一个参数字符串作为表的唯一约束 - 也就是说没有条目可以具有相同的url和参数字符串.参数字符串可以是任意长度(比800bytes长左右这是一个MySQL的关键最大长度,所以因为它抛出一个错误,我不能用独有的(URL,则params)...).

我考虑使用触发器来执行此操作,但如果触发器发现插入即将插入重复条目,如何抛出异常/引发错误?我想我想抛出MySqlException,就像MySql一样,重复主键等,所以我可以用我的C#代码捕获它.

我在触发器中有两个部分需要帮助:...中止抛出异常到C#...如何向C#抛出异常等?...允许插入... - 如果没有重复输入,我如何才允许插入?

继承人触发代码:

CREATE TRIGGER urls_check_duplicates
BEFORE INSERT ON urls
FOR EACH ROW

BEGIN
DECLARE num_rows INTEGER;

SELECT COUNT(*)
INTO num_rows
FROM urls
WHERE url = NEW.url AND params = NEW.params;

IF num_rows > 0 THEN
   ... ABORT/throw exception to C# ...
ELSE
   ... Allow insert ...
END
Run Code Online (Sandbox Code Playgroud)

mysql triggers duplicates

31
推荐指数
3
解决办法
4万
查看次数

Mysql列约束为"非空"/"必需"

我们可以在mysql中将列指定为"not empty"/"required".要求是确保在任何记录插入时字段永远不会为空.

mysql

5
推荐指数
2
解决办法
6578
查看次数

标签 统计

mysql ×3

constraints ×1

duplicates ×1

triggers ×1