我有两个表,A 和 B。结构如下所示:
CREATE TABLE A (
w int NOT NULL,
x int NOT NULL,
y int NOT NULL,
CONSTRAINT PK_A PRIMARY KEY (w, x, y)
)
CREATE TABLE B (
w int NOT NULL,
y int NULL,
z int NOT NULL
)
我想确保在表 B 中输入的任何一组值,w 和 y 在表 A 中。如果表 B 中的 y 值为空,我只想确保 w 在表 A 中。
一些示例数据、插入和预期结果:
Table A
w x y
----------
1 1 1
1 1 2
1 2 1
1 3 2
2 1 1
INSERT INTO B (w, y, z) VALUES (1, 1, 3) -- good
INSERT INTO B (w, y, z) VALUES (1, NULL, 3) -- good
INSERT INTO B (w, y, z) VALUES (1, 1, 4) -- good
INSERT INTO B (w, y, z) VALUES (2, NULL, 3) -- good
INSERT INTO B (w, y, z) VALUES (1, 3, 1) -- fail
INSERT INTO B (w, y, z) VALUES (3, NULL, 1) -- fail
这有什么办法吗?如果它发挥作用,我正在使用 SQL Server 2000。