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


70

我有两个现有表(TableA和TableB),我需要向TableA添加一个新列,该列具有TableB的外键,并且默认值不为null ...而且这两个约束都需要命名。我怎样才能做到这一点?

Answers:


126

在一个语句中添加两个约束并不像我想的那样容易,而且那里似乎没有很多示例(至少我找不到任何示例很容易),所以我想在这里分享我的做法,也许有人可以提出更好的方法?

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)

2
在MySQL中,我们需要在ADD之前添加前缀CONSTRAINTADD CONSTRAINT myNamedConstraint_df default (1) NOT NULL,
维杰·南德瓦纳

-1

我分两部分在SQL Server Management Studio中进行了此操作。

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

然后,我将GUID手动更改为它们在新列中应实际设置的值。然后,我添加了外键约束。

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

“这两个约束都需要命名。我该怎么做?” 绝对不是这样。
彼得·克拉索伊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.