如何使用命名的默认约束和命名外键约束来改变表添加列?

我有两个现有的表(TableA和TableB),我需要添加一个新的列到TableA有一个外键到TableB,并有一个非空的默认值…这两个约束都需要命名。 我怎样才能做到这一点?

在一个陈述中添加两个约束并不像我想的那样容易,在那里似乎没有太多的例子(至less我不能很容易地find),所以我想我会分享我在这里做了什么,也许有人可以build议一个更好的方法?

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) 

我在SQL Server Management Studio中分两部分。

 ALTER TABLE MyTable ADD MyId uniqueidentifier DEFAULT (NEWID()) 

然后,我手动将GUID更改为新列中的实际内容。 然后我添加了外键约束。

 ALTER TABLE MyTable ADD FOREIGN KEY (MyId ) REFERENCES OtherTable(Id)