SQL创建表完整性约束顺序

时间:2014-03-20 20:51:33

标签: sql

在SQL中使用'CREATE TABLE'命令时,是否存在完整性约束应该存在的特定顺序?通过完整性约束,我的意思是'NOT NULL','CHECK','UNIQUE'等。

非常感谢。

1 个答案:

答案 0 :(得分:2)

不,你把约束放在什么顺序并不重要.SQL是一种声明性语言,所以一般来说你会对语法有一些余地......

注意

但有一点需要注意。您尚未指定RDBMS,因此我回答了SQL作为ANSI标准语言。某些实现可能会施加一些规则..

例如,以下内容在MySQL,PostgreSQL,MS SQL Server,Oracle SQL中有效:

CREATE TABLE Test(
  ColumnA INT NOT NULL UNIQUE,
  ColumnB INT UNIQUE NOT NULL,
  ColumnC INT NOT NULL CHECK (ColumnC > 0) 
);

但以下情况会让MySQL感到不快,而其他人会很好:

CREATE TABLE Test(
  ColumnA INT NOT NULL UNIQUE,
  ColumnB INT UNIQUE NOT NULL,
  ColumnC INT CHECK (ColumnC > 0) NOT NULL   -- MySQL does not like this!!
);