如何更改具有命名默认约束和命名外键约束的表添加列?

Posted

技术标签:

【中文标题】如何更改具有命名默认约束和命名外键约束的表添加列?【英文标题】:How to alter table add column with named default constraint and named foreign key constraint? 【发布时间】:2012-10-23 14:58:49 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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)

【讨论】:

mysql中,我们需要在CONSTRAINT之前添加ADD前缀。 ADD CONSTRAINT myNamedConstraint_df default (1) NOT NULL,

以上是关于如何更改具有命名默认约束和命名外键约束的表添加列?的主要内容,如果未能解决你的问题,请参考以下文章

Sqlserver 数据库

oracle为表建立外键时没有命名FOREIGN KEY约束,现在想删外键怎么办??

删除未命名的约束

多表操作

Sql Server数据库之约束

无法添加外键约束 MySQL