我有两个现有的表(TableA和TableB),我需要向TableA添加一个新列,该列具有TableB的外键并且具有非null的默认值...并且这两个约束都需要命名。我怎么能这样做?
答案 0 :(得分:99)
在一个语句中添加两个约束并不像我想象的那么容易,并且似乎没有很多例子(至少我没有找到任何容易的),所以我想我会在这里分享我是如何做到的,也许有人可以建议更好的方式?
ALTER TABLE [table name] ADD
[New Column Name] [Column Type]
CONSTRAINT [constraint name] DEFAULT ([default value]) NOT NULL,
CONSTRAINT [constraint name] FOREIGN KEY ([New Column Name])
REFERENCES [Other Table] ([Foreign ID])
示例:
ALTER TABLE tableA ADD
myNewColumn BIGINT
CONSTRAINT myNamedConstraint_df default (1) NOT NULL,
CONSTRAINT myNamedConstraint_fk FOREIGN KEY (myNewColumn)
REFERENCES tableB (tableBPrimaryKeyID)
答案 1 :(得分:-1)
我在SQL Server Management Studio中分两部分完成。
ALTER TABLE MyTable
ADD MyId uniqueidentifier DEFAULT (NEWID())
然后我手动将GUID更改为新列中的实际内容。然后我添加了外键约束。
ALTER TABLE MyTable
ADD FOREIGN KEY (MyId )
REFERENCES OtherTable(Id)