📜  在 INSERT 之后返回 id 或某个值 (1)

📅  最后修改于: 2023-12-03 14:50:56.405000             🧑  作者: Mango

在 INSERT 之后返回 id 或某个值

在进行 INSERT 操作时,有时候需要获取插入数据的 ID 或者是某个字段的值。这时就需要使用一些特殊的语法或方法来实现。

MySQL

在 MySQL 中,可以使用 LAST_INSERT_ID() 函数获取插入数据的 ID。例如:

INSERT INTO `users` (`name`, `age`) VALUES ('John', 21);
SELECT LAST_INSERT_ID();

这样就能在 INSERT 后立即获取插入数据的 ID。

如果要获取某个字段的值,可以在 INSERT 语句中使用 SELECT 子句。例如:

INSERT INTO `users` (`name`, `age`) VALUES ('John', 21);
SELECT `name` FROM `users` WHERE `id` = LAST_INSERT_ID();
SQLite

在 SQLite 中,也可以使用 last_insert_rowid() 函数获取插入数据的 ID。例如:

INSERT INTO `users` (`name`, `age`) VALUES ('John', 21);
SELECT last_insert_rowid();

如果要获取某个字段的值,可以在 INSERT 语句中使用 RETURNING 子句。例如:

INSERT INTO `users` (`name`, `age`) VALUES ('John', 21) RETURNING `name`;
PHP

在 PHP 中,可以使用 PDO::lastInsertId() 方法获取插入数据的 ID。例如:

$stmt = $pdo->prepare("INSERT INTO `users` (`name`, `age`) VALUES (:name, :age)");
$stmt->execute([
    ':name' => 'John',
    ':age' => 21,
]);
$id = $pdo->lastInsertId();

如果要获取某个字段的值,可以在 INSERT 语句中使用 RETURNING 子句,然后使用 PDOStatement::fetch() 方法获取结果。例如:

$stmt = $pdo->prepare("INSERT INTO `users` (`name`, `age`) VALUES (:name, :age) RETURNING `name`");
$stmt->execute([
    ':name' => 'John',
    ':age' => 21,
]);
$name = $stmt->fetch(PDO::FETCH_COLUMN, 0);
Python

在 Python 中,可以使用 cursor.lastrowid 属性获取插入数据的 ID。例如:

cursor.execute("INSERT INTO `users` (`name`, `age`) VALUES (?, ?)", ('John', 21))
id = cursor.lastrowid

如果要获取某个字段的值,可以在 INSERT 语句中使用 RETURNING 子句,然后使用 cursor.fetchone() 方法获取结果。例如:

cursor.execute("INSERT INTO `users` (`name`, `age`) VALUES (?, ?) RETURNING `name`", ('John', 21))
name = cursor.fetchone()[0]

以上就是在 INSERT 之后返回 ID 或某个值的方法,具体实现方式会随着不同的数据库和编程语言而有所区别。