2013-02-27 78 views
-1

當INSERT INTO命令給出外鍵錯誤消息時,MYSQL中的哪些命令可用於插入新數據?如果插入命令不起作用,如何在mysql中插入數據

+1

你只需要執行'INSERT'語句。如果發生錯誤,將會拋出錯誤消息。 – 2013-02-27 16:15:23

+4

外鍵約束可能存在以保持數據的完整性。我建議你制定約束條件,而不是試圖規避它。 – 2013-02-27 16:15:43

回答

1

你不知道。您可以用滿足數據庫要求的方式製作您的數據和/或語句。

0

,如果你已經明確聲明「外鍵錯誤消息」你收到它會有所幫助。但是,假設它是最可能的候選者之一:

這兩個消息都表示相同的事情:您試圖插入(或更新)記錄,以便表示外鍵的列將包含引用不存在的記錄的值父表。

在下面的例子中,人們會收到錯誤1216在試圖插入/更新與CustomerID訂單並不在Customers表存在:

CREATE TABLE Customers (
    CustomerID SERIAL 
) Engine=InnoDB; 

CREATE TABLE Orders (
    OrderID SERIAL, 
    CustomerID BIGINT UNSIGNED NOT NULL, 
    FOREIGN KEY (CustomerID) REFERENCES Customers (CustomerID) 
); 

INSERT INTO Customers 
    (CustomerID) 
VALUES 
    (100), 
    (200) 
; 

INSERT INTO Orders 
    (OrderID, CustomerID) 
VALUES 
    (1, 200), -- okay, as CustomerID 200 exists 
    (2, 300) -- fails, as CustomerID 300 does not exist 
; 

正如其他人所建議的,最好解決此問題的方法是修改數據庫活動,以便滿足外鍵約束。

或者,您可以從數據庫中刪除外鍵約束(但是RDBMS不會爲您執行參照完整性,這通常是人們希望它執行的操作)。或者可以暫時禁用MySQL的參照完整性檢查—,但是通常只在加載已知具有參照完整性的數據時按照可能導致約束違規的順序進行:建議在通用應用程序中使用而不是