php - MySQL插入语句外键自动添加pk

标签 php mysql foreign-keys primary-key sql-insert

我有一个相当复杂的数据库,其中设置了许多外键关系,并且想知道是否有一种简单的方法可以将条目插入到这些表之一中。

这是保存一些外键的表。

CREATE TABLE package (
    id INT PRIMARY KEY AUTO_INCREMENT,
    master_id INT NOT NULL UNIQUE,
    library_id INT NOT NULL,
    FOREIGN KEY (master_id) REFERENCES master(id),
    FOREIGN KEY (library_id) REFERENCES library(id)
) DEFAULT CHARSET = utf8;

当建立这个表时,它最终只保存两个外键和主键,这意味着这里的所有内容都是数字。这就是我想要发生的事情,但这也意味着该表的 INSERT 语句看起来像

INSERT INTO package (master_id, library_id) VALUES (235, 12);

或者类似的东西...

有没有办法发表这样的声明:

INSERT INTO package (master_id, library_id)
VALUES ([master_field], [library_field]);

其中master_fieldlibrary_field是这些表的条目?我也不知道如何处理这个问题,因为主表中没有其他字段是唯一的,所以如果有两个条目会发生什么...

无论如何,如果有人知道如何做类似的事情,我们将不胜感激!在 MySQL 中执行所有这些操作是更好的选择,但使用 PHP 执行此操作没有任何问题。

最佳答案

您可以在 MySQL 中通过使用 SELECT 语句为 INSERT 提供值来完成这一切。例如:

INSERT INTO package (master_id, library_id)
SELECT (SELECT master_field FROM master_table WHERE {some condition} LIMIT 1), (SELECT library_id FROM library_table WHERE {some condition} LIMIT 1)

不过,您可能不希望这样做,而是在 PHP 代码中执行单独的 SELECT 语句,以便在没有与您的条件匹配的library_id 等情况下更轻松地处理错误。

关于php - MySQL插入语句外键自动添加pk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29068777/

相关文章:

php - 修复 WooCommerce 中购物车百分比的最大优惠券折扣

javascript - 当复选框名称来自php中的数据库时,如何访问多个复选框名称

php - PHP丢失变量数据

mysql - 在sql中重命名每个组的重复项

MySQL::Edge Case::混合类型外键::可能还是做梦?

mysql - SQL外键添加问题

php - 如何在启用 JavaScript 的情况下进行 cURL?

MYSQL 选择平均条目数

php - 分发评分数据以增加标准偏差

sql-server - 表存在外键时发生死锁