当前位置: 首页 > 知识库问答 >
问题:

在一个命令中添加具有外键约束的新列

赵立果
2023-03-14

我正在尝试添加一个外键的新列。我可以使用两个单独的alter table命令添加列和外键约束:

ALTER TABLE one
ADD two_id integer;

ALTER TABLE one
ADD FOREIGN KEY (two_id) REFERENCES two(id);

有没有办法用一个ALTER TABLE命令而不是两个来做到这一点?我想不出任何可行的办法。

共有2个答案

易品
2023-03-14

在MS-SQLServer中:

ALTER TABLE one
ADD two_id integer CONSTRAINT fk FOREIGN KEY (two_id) REFERENCES two(id)
宇文鸿振
2023-03-14

与SQL相关的问题一样,它依赖于DBMS。有些DBMS允许组合用逗号分隔的ALTER table操作。例如...

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中,必须分两步完成。

 类似资料:
  • 问题内容: 因此,我作为项目需求试图将外键约束添加到数据库中,并且它第一次或在两个不同的表上运行,但是在尝试添加外键约束时,我在两个表上遇到错误。我收到的错误消息是: 错误1215(HY000):无法添加外键约束 这是我用来创建表的SQL,两个有问题的表是和。 问题答案: 要查找特定错误,请运行以下命令: 并查看该部分。 子列的数据类型必须与父列完全匹配。例如,由于是,也需要是,而不是。 另外,您

  • 我已经发现了几十个类似的问题,但没有一个解决方案在我的案例中有效。当我运行“php artisan migrate:fresh”时,它抛出了错误。。。 illumb\Database\QueryException:SQLSTATE[HY000]:一般错误:1215无法添加外键约束(SQL:alter tableadd constraint外键()引用()关于删除级联) > 我检查auth用户表,它

  • 下面是一个现有的模型,名为: 下面是我试图创建的新模型: 看起来很简单,对吧?所以我进行迁移: 在网上搜索,我只找到了一个关于Django的问题的例子(在创建表时Django MySQL错误),但这并没有帮助。没有迁移到,我也看不出为什么会有迁移,因为我们最近既没有修改这部分,也没有升级任何包。 对任何帮助深表感谢。

  • 我有两张桌子。第一个是人口;第二个是空的。 我希望第二个有一个外键,它引用第一个中的一列。 null 架构: 填充。为空。 不能成为的外键: MySQL没有提供错误的原因;不返回: 我拥有所需的数据库权限。 我已经仔细检查了列(甚至表)是否具有相同的排序规则(字符集不适用于INT列): MySQL无法添加外键约束 MySQL:错误1215(HY000):无法添加外键约束 无法添加外键约束-MySQ

  • 我正在尝试在Laravel中创建外键,但是当我使用迁移表时,出现以下错误: 我的迁移代码如下: 优先级迁移文件 用户迁移文件 任何关于我做错了什么的想法,我现在就想知道,因为我有很多表需要创建,例如用户、客户、项目、任务、状态、优先级、类型、团队。理想情况下,我希望创建使用外键保存此数据的表,即和等。 希望有人能帮助我开始。

  • 问题内容: 似乎至少有两种方法可以使用直接T-SQL添加默认约束。我是否正确,以下两者之间的唯一区别是第二种方法专门为约束创建了一个名称,而第一种方法有一个由SQL Server生成的名称? 问题答案: 几乎可以,对于ALTER TABLE 您也可以在一步中为CREATE或ALTER添加默认的columnn。 如您所述,如果未提供名称,则系统会生成一个名称。MSDN说是可选的。这同样适用于任何列或