MySQL插入语句外键自动添加pk
MySQL Insert Statement foreign key auto add pk
我有一个相当复杂的数据库设置有很多外键关系,想知道是否有一种简单的方法可以将条目插入其中一个 table。
这是保存一些外键的table。
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;
设置此 table 时,它最终只包含两个外键和主键,这意味着这里的所有内容都是数字。这是我想要发生的事情,但这也意味着 table 的 INSERT
语句看起来像
INSERT INTO package (master_id, library_id) VALUES (235, 12);
或类似的东西...
有没有办法发表这样的声明:
INSERT INTO package (master_id, library_id)
VALUES ([master_field], [library_field]);
其中 master_field
和 library_field
是那些 table 的条目?我不确定这将如何处理,因为主 table 中没有其他字段是唯一的所以如果有两个条目会发生什么...
无论如何,如果有人知道如何做这样的事情,我们将不胜感激!在 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 符合您的条件。
我有一个相当复杂的数据库设置有很多外键关系,想知道是否有一种简单的方法可以将条目插入其中一个 table。
这是保存一些外键的table。
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;
设置此 table 时,它最终只包含两个外键和主键,这意味着这里的所有内容都是数字。这是我想要发生的事情,但这也意味着 table 的 INSERT
语句看起来像
INSERT INTO package (master_id, library_id) VALUES (235, 12);
或类似的东西...
有没有办法发表这样的声明:
INSERT INTO package (master_id, library_id)
VALUES ([master_field], [library_field]);
其中 master_field
和 library_field
是那些 table 的条目?我不确定这将如何处理,因为主 table 中没有其他字段是唯一的所以如果有两个条目会发生什么...
无论如何,如果有人知道如何做这样的事情,我们将不胜感激!在 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 符合您的条件。