2013-04-20 154 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