我想知道是否有任何方法可以创建一个可以应用于表中所有属性的非空约束。我知道我可以在每一行添加一个,但我只是想学习提高效率。我尝试在网上搜索,但没有找到有关此主题的任何内容。
谢谢!
更多信息:
我想我的问题可以概括为“有没有办法定义表范围或数据库范围的约束?”。对于整个数据库,我需要将每个 varchar 的默认值设置为 '' (空字符串),但现在我正在为每个 varchar 手动执行此操作。
再说一遍,我已经完成了大部分工作,但似乎应该有一种方法可以避免这种重复。
最佳答案
来自http://dev.mysql.com/doc/refman/5.1/en/create-table.html - 唯一可以放置 null/not null 的地方是在列上。
column_definition:
data_type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'string']
[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
[STORAGE {DISK|MEMORY|DEFAULT}]
[reference_definition]
实际上没有理由有表约束,IMO。 DDL 指定对每列中的数据的约束,而不是列定义本身。虽然人们可能希望将其作为语法糖放入其中,但似乎可能存在缺点 - 1)要添加新列,您可能必须更改表约束 2)MySQL 默认为 NULL,这可能会导致困惑
关于mysql - SQL对整个表的非空约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7584296/