【问题标题】:inserting into database with foreign key constraints使用外键约束插入数据库
【发布时间】:2013-12-17 13:44:00
【问题描述】:

我遇到以下问题:

我有两张桌子(例如)

 Table CARS:
 carID      |      Car Make
 1          |      Honda
 2          |      Misubishu

carID 是主键

 Table MODELS
 modelID     |      mName       |      carID
 1           |      accord      |       1

其中 modelID 是主键,carID 是外键(对 CARS)。

现在假设我想将 Honda Civic 插入 MODELS 表中。

我会插入 civic 并从 CARS 表中获取与 Honda 匹配的汽车 ID

我一直在使用 INSERT SELECT 语句,但我无法让它工作;我一直在做这样的事情:https://dba.stackexchange.com/questions/46410/how-do-i-insert-a-row-which-contains-a-foreign-key

这似乎正是我想要的,但我仍然得到关于 f-key 的 sqlexceptions。

谢谢!

【问题讨论】:

  • 您的查询是什么,错误信息是什么?
  • com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException:无法添加或更新子行:外键约束失败是我的错误;我尝试了一堆查询,但我的最后一个是:

标签: mysql sql database database-administration


【解决方案1】:

如果 modelID 是 auto_incremented 你可以这样做:

INSERT INTO models(mName,carID)
SELECT 'Civic',carID
FROM cars 
WHERE `Car Make` = 'Honda';

sqlfiddle demo

如果 modelID 不是 auto_incremented,您还必须传递 id。

【讨论】:

  • 正确的想法。不过,汽车制造场中的空间必须逃逸。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 2018-04-04
相关资源
最近更新 更多