當INSERT INTO命令給出外鍵錯誤消息時,MYSQL中的哪些命令可用於插入新數據?如果插入命令不起作用,如何在mysql中插入數據
-1
A
回答
1
你不知道。您可以用滿足數據庫要求的方式製作您的數據和/或語句。
0
您有INSERT ... ON DUPLICATE KEY UPDATE
來處理重複鍵錯誤,但您沒有一個用於外鍵錯誤。
如果你要處理的重複鍵指http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
0
,如果你已經明確聲明「外鍵錯誤消息」你收到它會有所幫助。但是,假設它是最可能的候選者之一:
- 錯誤1216:Cannot add or update a child row: a foreign key constraint fails;或
- 錯誤1452:Cannot add or update a child row: a foreign key constraint fails (%s)。
這兩個消息都表示相同的事情:您試圖插入(或更新)記錄,以便表示外鍵的列將包含引用不存在的記錄的值父表。
在下面的例子中,人們會收到錯誤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的參照完整性檢查—,但是通常只在加載已知具有參照完整性的數據時按照可能導致約束違規的順序進行:建議在通用應用程序中使用而不是。
相關問題
- 1. PHP MYSQL插入命令不起作用
- 2. MySQL插入數據不起作用
- 3. SQL c#插入命令不起作用
- 4. MYSQL如果不存在插入數據
- 5. 如何在錶行插入MySQL命令
- 6. MySQL插入不起作用
- 7. 使用插入命令向上插入到MySQL數據庫
- 8. 插入命令在MySQL
- 9. 插入數據到MySQL表 - 命令行
- 10. mysqli和mysql插入數據庫命令
- 11. 插入如果不存在UPDATE如果存在不起作用
- 12. 我如何插入與MySQL插入命令?
- 13. 如何在MySQL表中插入數據?
- 14. MYSQL數據插入查詢在Python中不起作用
- 15. 如何插入新的數據,如果USER_ID不MySQL表存在
- 16. 如何在項目中插入()函數MySQL命令
- 17. MySQL中,插入行,如果不存在
- 18. 如果輸入存在,不要插入,否則插入PHP mysql
- 19. Mysql插入命令語法
- 20. QSqlQuery插入數據庫不起作用
- 21. 插入數據庫「MDF」不起作用
- 22. 插入數據庫不起作用
- 23. 數據插入循環不起作用
- 24. 插入數據庫不起作用
- 25. 數據庫插入不起作用
- 26. SQLAlchemy的插入數據不起作用
- 27. CodeIgniter數據插入不起作用
- 28. 插入命令不要插入數據庫?
- 29. 插入數據到mysql數據庫(如果不存在)
- 30. 插入數據(如果不存在)
你只需要執行'INSERT'語句。如果發生錯誤,將會拋出錯誤消息。 – 2013-02-27 16:15:23
外鍵約束可能存在以保持數據的完整性。我建議你制定約束條件,而不是試圖規避它。 – 2013-02-27 16:15:43