mysql - 数据库输入副本

标签 mysql sql database

我将从输入我想要的内容开始。

所以,我有一个表,其中每一行自动获得一个新的 ID,对于在那里创建的每个新行,我希望该 ID 也被放入另一个表的特定列中。

数据库结构:事件

(这是我要从中复制 id 的表)

事件编号 |更多专栏

-

数据库结构:可连接 (这是我要将“EventID”复制到的表)

事件编号 |更多专栏。

所以,当一个事件被放入我的表“事件”时,我希望我的 EventID 也自动放入我的 jointable 中。

最佳答案

使用返回最后插入的自动生成 ID 的函数。

MySql 中是 LAST_INSERT_ID()
SQL Server 中是 SCOPE_IDENTITY , IDENT_CURRENT , @@IDENTITY

例如在 MySql 中你可以这样做

INSERT INTO event (column1,column2...) VALUES (...); 
SET @last_event_id = LAST_INSERT_ID();
INSERT INTO jointable (EventID, column1, column2...) VALUES (@last_event_id, ...);

更新: 要从客户端 (php+mysqli) 执行此操作,请使用 mysqli_insert_id()

在那种情况下你的代码看起来像

$db = mysqli_connect(...);
...
$query = "INSERT INTO event (column1, column2...) VALUES (...)";
mysql_query($query);

$last_event_id = mysqli_insert_id($db);

$query = "INSERT INTO jointable (EventID, column1, column2...) VALUES ($last_event_id, ...)";
mysql_query($query);

关于mysql - 数据库输入副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14808109/

相关文章:

mysql - 将两个表(多个列和行)中的数据分组到一行中

sql - 如何将正数和负数分成各自的列?

sql - 有没有办法在 golang 中使用 package database/sql 获取列的类型?

java.sql.SQLException : Access denied for user '' @'localhost' (using password: NO) with Spring+JPA+ MySql 异常

node.js - 存储历史数据的最佳方法?

php - 在旧的 apache 安装上使用 PHP 5.3

mysql - 获取每个作业的最后一个进程并确定状态

php - MySQL 错误 "Too many connections"

php - 我可以使用 PHP/mySQL 从 Wordpress 中查询其他数据库吗?

MySQL 索引有时不被使用