【问题标题】:Create table without checking foreign key on unexisting table创建表而不检查不存在表上的外键
【发布时间】:2017-11-20 17:15:03
【问题描述】:

我正在调整一个非常大的查询(MySQL 到 SQL),它创建了大量的表和关系。问题是它总是在添加引用该表的外键之前检查该表是否存在。

所以我必须重新排序查询以避免这个问题,我的问题是是否有可以关闭检查的指令,所以它会创建表并添加引用,而不会在遇到每个错误时停止查询。

我正在 Azure DB 中使用 SQL。

谢谢。

【问题讨论】:

    标签: foreign-keys azure-sql-database create-table


    【解决方案1】:

    最简单的方法是先创建所有表,然后使用ALTER TABLE 添加约束。

    例如:

    CREATE TABLE a(id INT PRIMARY KEY IDENTITY(1,1), b_id INT, c CHAR(10));
    CREATE TABLE b(id INT PRIMARY KEY IDENTITY(1,1), z INT);
    
    ALTER TABLE a ADD CONSTRAINT FK_a_b_id_b FOREIGN KEY (b_id) REFERENCES b(id);
    

    Rextester Demo

    【讨论】:

    • 谢谢!无论如何,我必须检查所有查询并更改它们。想知道是否没有为数据库设置 foreign_check off。
    • 您无需更改任何内容。您使用什么工具来编写表格脚本?如果 SSMS 可以选择自动执行。
    • 是的,我正在使用 SSMS,但我已经得到了脚本,我只是在适应 MySQL 语法。问题是它有 7k 行脚本。
    • 你真的应该尝试使用一些工具,比如 MySQL Workbench 来编写表格
    猜你喜欢
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    相关资源
    最近更新 更多