2013-02-27 80 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的参照完整性检查—,但是通常只在加载已知具有参照完整性的数据时按照可能导致约束违规的顺序进行:建议在通用应用程序中使用而不是