在一个命令中添加具有外键约束的新列
我想添加一个新的列将是一个外键。 我已经能够使用两个单独的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);