如何在SQL脚本中排序查询执行,以便它们以正确的顺序执行?



假设我有三个表:

tbody> <<tr>BC
参考文献
-
B

典型的解决方案是将表的创建与约束的创建解耦。例如,您的脚本可能看起来像:

CREATE TABLE C(...);
CREATE TABLE A(...);
CREATE TABLE B(...);
alter table c add constraint fk1 foreign key (x) references b (y);
alter table b add constraint fk2 foreign key (z) references a (w);

这就是生产级脚本的典型创建方式。这是愚蠢的,因为不同的人(角色DBA)将在生产中执行脚本,并且将执行脚本而不尝试改进它。如果执行成功(或错误),DBA将向您提供执行日志。

有一个使用超级指令CREATE SCHEMA的解决方案。当然,您需要使用特定的模式来做到这一点。而不是丑陋的dbo模式。例子:

CREATE SCHEMA SCH_TEST
CREATE TABLE B(PK_B INT PRIMARY KEY, FK_A INT REFERENCES A (PK_A))   
CREATE TABLE A(PK_A INT PRIMARY KEY)
CREATE TABLE C(PK_C INT PRIMARY KEY, FK_B INT REFERENCES B (PK_B))
;

就这些!

它来自标准ISO SQL语言…