-1

当 INSERT INTO 命令为您提供外键错误消息时,您可以使用 MYSQL 中的哪些命令来插入新数据?

4

3 回答 3

1

你没有。您Insert以满足数据库要求的方式制作数据和/或语句。

于 2013-02-27T16:16:39.270 回答
0

如果您准确指定了您收到的“外键错误消息”,那将会有所帮助。但是,假设它是最有可能的候选人之一:

这两条消息都表示同一件事:您试图插入(或更新)一条记录,以便表示外键的列包含引用父表中不存在的记录的值。

在下面的示例中,尝试使用表CustomerID中不存在的a 插入/更新订单时会收到错误 1216 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 的引用完整性检查——但这通常只在加载已知具有引用完整性的数据时才会这样做,这可能会导致违反约束:建议在一般应用程序中使用。

于 2013-02-27T16:36:40.407 回答
0

您必须INSERT ... ON DUPLICATE KEY UPDATE处理重复键错误,但您没有外键错误。

如果要处理重复键,请参阅http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

于 2013-02-27T16:19:42.113 回答