假设我有三个表:
表 | 参考文献 | - | B
---|---|
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语言…