mysql - SQL对整个表的非空约束

标签 mysql sql database ddl

我想知道是否有任何方法可以创建一个可以应用于表中所有属性的非空约束。我知道我可以在每一行添加一个,但我只是想学习提高效率。我尝试在网上搜索,但没有找到有关此主题的任何内容。

谢谢!

更多信息:

我想我的问题可以概括为“有没有办法定义表范围或数据库范围的约束?”。对于整个数据库,我需要将每个 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/

相关文章:

php - 阻止 2 个相同的查询几乎同时执行?

mysql - 如何连接2个表,检查它们的每个元素是否存在于3个表中并将其表示为数字

mysql - 统计表中的项目,涉及的表字段枚举类型

mysql - 修复对 mysql 的查询

database - 带有 MS Access 2010 数据库的 Delphi FireDAC。为什么它将 ACE 转换为 Jet?

php - 比较同一个表中的两个值

sql - SUM 函数中的 Select 语句

sql - 具有内连接的重复字段

mysql - 我在哪里可以找到 Linux 中 XAMPP 的 SQL 文件?

java - 在 JDBC 上缓存数据