【发布时间】:2010-03-25 09:09:33
【问题描述】:
在this question 中,我学习了如何防止插入 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)
);
仍然允许我做这个插入:
INSERT INTO tblFoo (foo_test) VALUES ('');
我想阻止。
【问题讨论】:
-
我可以看到您需要防止空字符串,并且我也被教导要防止在数据库级别插入错误数据。但经验告诉我,你需要根据约束的复杂性做出谨慎的成本/收益判断。一些约束在应用程序级别很容易表达,但在数据库级别可能会变得非常麻烦。更糟糕的是,如果您做得过火,他们往往会将您完全锁定在数据库供应商中。只是我的 0.02 美元。
-
空字符串与 null 不同,因此没有“无论如何”。
标签: mysql constraints