2013-04-20 152 views
1

我有一个问题。我有两个表,1个外键。如何避免约束SQL Server 2008

表A和表B

CREATE TABLE A 
kdtrans int (5) primary key 



INSERT INTO A Values 
(1),(2),(3) 

然后我想在表B中

CREATE TABLE B 
kdtrans int (5) primary key, 
FOREIGN KEY kdtrans REFERENCES A(kdtrans) 



INSERT INTO B Values 
(1),(2),(3),(4),(5) 

插入这些查询是约束的误差原因。所以我应该怎么做才能避免约束。我不会在表A中插入新记录。

+1

为什么你要插入记录'B'中违反约束?有限制的全部意义在于防止这一点。 – 2013-04-20 09:53:45

+0

导致老板问我这么做): – 2013-04-20 09:54:36

+0

然后放下约束。 – 2013-04-20 09:54:52

回答

1

可以通过禁用约束来实现这一点,但是您可以将它放弃,因为它应该保证的事情不再是真实的。

要禁用,您可以使用

CREATE TABLE A 
    (
    kdtrans INT PRIMARY KEY 
) 

INSERT INTO A 
VALUES  (1), 
      (2), 
      (3) 

CREATE TABLE B 
    (
    kdtrans INT PRIMARY KEY CONSTRAINT FK FOREIGN KEY REFERENCES A(kdtrans) 
) 

ALTER TABLE B 
    NOCHECK CONSTRAINT FK 

INSERT INTO B 
VALUES  (1), 
      (2), 
      (3), 
      (4), 
      (5) 

砸约束你会使用

ALTER TABLE B DROP CONSTRAINT FK 
+0

感谢它的工作 – 2013-04-20 10:12:01