在一个命令中添加具有外键约束的新列

我想添加一个新的列将是一个外键。 我已经能够使用两个单独的ALTER TABLE命令添加列和外键约束:

ALTER TABLE one ADD two_id integer ALTER TABLE one ADD FOREIGN KEY (two_id) REFERENCES two(id) 

有没有办法用一个ALTER TABLE命令而不是两个? 我无法想出任何有用的东西。

像SQL相关的问题经常出现,这取决于DBMS。 一些DBMS允许你组合用逗号分隔的ALTER表操作。 例如…

Informix语法:

 ALTER TABLE one ADD two_id INTEGER, ADD CONSTRAINT FOREIGN KEY(two_id) REFERENCES two(id); 

IBM DB2 LUW的语法是类似的,重复关键字ADD,但是(如果我正确地阅读图)不需要用逗号分隔添加的项目。

Microsoft SQL Server语法:

 ALTER TABLE one ADD two_id INTEGER, FOREIGN KEY(two_id) REFERENCES two(id); 

有些人不允许你像这样组合ALTER TABLE操作。 标准SQL只允许在ALTER TABLE语句中进行单个操作,因此在标准SQL中,必须分两步完成。

在MS-SQLServer中:

 ALTER TABLE one ADD two_id integer CONSTRAINT fk FOREIGN KEY (two_id) REFERENCES two(id) 

对于SQL Server应该是这样的

 ALTER TABLE one ADD two_id integer constraint fk foreign key references two(id) 

你可以在SQL Server中像下面这样做

 ALTER TABLE one ADD two_id int foreign key REFERENCES two(id) 

在Oracle中 :

 ALTER TABLE one ADD two_id INTEGER CONSTRAINT Fk_two_id REFERENCES two(id); 

MS SQL SERVER中:

与用户定义的外键名称

ALTER TABLE tableName ADD columnName dataType, CONSTRAINT fkName FOREIGN KEY(fkColumnName) REFERENCES pkTableName(pkTableColumnName);

没有用户定义的外键名称

ALTER TABLE tableName ADD columnName dataType, FOREIGN KEY(fkColumnName) REFERENCES pkTableName(pkTableColumnName);