MySQL 向使用 auto_increment 的 table 插入数据的过程,获取生成的 PK auto_increment 并将其插入桥 table?
MySQL Procedure to insert data to a table that use auto_increment, get the PK auto_increment generated and insert it into a bridgetable?
我在学习的课程中使用 PHP 创建了一个 restApi。当涉及到数据库时,我不确定这个问题的最佳实践是什么 ->
我有每门课程所用语言的数据,为了规范化数据,我有单独的语言 table 和连接它们的桥梁。
所以一个 table 用于课程,一个用于语言,还有一个桥梁 table 连接它们。
CREATE TABLE `Courses`
(`Course_ID` INT(11),
`Education_ID` INT(11),
`CourseName` VARCHAR(100) NOT NULL,
`Points` VARCHAR (5),
`Grade` VARCHAR(3),
PRIMARY KEY (`Course_ID`)
);
CREATE TABLE `Language` (
`Language_ID` INT(11),
`Language` VARCHAR(100) NOT NULL,
`Img_url` VARCHAR (200),
PRIMARY KEY (`Language_ID`)
);
CREATE TABLE `Bridge_language` (
`Course_ID` INT(11) NOT NULL,
`Language_ID` INT(11) NOT NULL,
KEY `PKFK` (`Course_ID`, `Language_ID`)
);
ALTER TABLE Courses MODIFY Course_ID INTEGER AUTO_INCREMENT;
ALTER TABLE Language MODIFY Language_ID INTEGER AUTO_INCREMENT;
添加新课程时,在 SQL 我知道语言的 ID,(我将在管理页面中添加新语言的功能)然后当您创建新课程时,您只需点击添加语言,就会添加该语言的 ID。
但是我没有的是用 auto_increment 创建的课程的 ID。在 SQL 中使用 function/procedure 有没有一种聪明的方法可以获取 auto_increment 生成的 ID 并将其添加到桥 table 中?
或者我是否需要查询数据库并获取最新的 ID 并添加一个并将其发送到网桥 table?
在 MySQL 中,您可以使用 last_insert_id()
检索您执行的最后一个 insert
查询的 auto-generated id。您没有提供有关代码的太多细节,但逻辑如下:
insert into course (education_id, coursename, points, grade)
values (?, ?, ?, ?);
insert into bridge_language (course_id, language_id)
values (last_insert_id(), ?);
我在学习的课程中使用 PHP 创建了一个 restApi。当涉及到数据库时,我不确定这个问题的最佳实践是什么 ->
我有每门课程所用语言的数据,为了规范化数据,我有单独的语言 table 和连接它们的桥梁。
所以一个 table 用于课程,一个用于语言,还有一个桥梁 table 连接它们。
CREATE TABLE `Courses`
(`Course_ID` INT(11),
`Education_ID` INT(11),
`CourseName` VARCHAR(100) NOT NULL,
`Points` VARCHAR (5),
`Grade` VARCHAR(3),
PRIMARY KEY (`Course_ID`)
);
CREATE TABLE `Language` (
`Language_ID` INT(11),
`Language` VARCHAR(100) NOT NULL,
`Img_url` VARCHAR (200),
PRIMARY KEY (`Language_ID`)
);
CREATE TABLE `Bridge_language` (
`Course_ID` INT(11) NOT NULL,
`Language_ID` INT(11) NOT NULL,
KEY `PKFK` (`Course_ID`, `Language_ID`)
);
ALTER TABLE Courses MODIFY Course_ID INTEGER AUTO_INCREMENT;
ALTER TABLE Language MODIFY Language_ID INTEGER AUTO_INCREMENT;
添加新课程时,在 SQL 我知道语言的 ID,(我将在管理页面中添加新语言的功能)然后当您创建新课程时,您只需点击添加语言,就会添加该语言的 ID。
但是我没有的是用 auto_increment 创建的课程的 ID。在 SQL 中使用 function/procedure 有没有一种聪明的方法可以获取 auto_increment 生成的 ID 并将其添加到桥 table 中?
或者我是否需要查询数据库并获取最新的 ID 并添加一个并将其发送到网桥 table?
在 MySQL 中,您可以使用 last_insert_id()
检索您执行的最后一个 insert
查询的 auto-generated id。您没有提供有关代码的太多细节,但逻辑如下:
insert into course (education_id, coursename, points, grade)
values (?, ?, ?, ?);
insert into bridge_language (course_id, language_id)
values (last_insert_id(), ?);