如何获得 SQL / MariaDB INSERT 结果

How to get SQL / MariaDB INSERT result

我真正找不到的一件事是在 SQL INSERT 之后得到新的 ROW 作为结果。

last_inserted_id() 仅在具有 INT ID 时有效,如果我没记错的话,它也必须自动递增。我现在尝试的是创建一个临时 table 并插入到两个 table 中。

它可以工作,只是现在它缺少正确的 ID,因为由于新的 table 而不是原来的 ROW,它有自己的值 0。我想将它包含在我的 PHP 代码中,它也应该适用于不同的数据库 table。啊,我用的是 MariaDB 10.3 +.

一个考虑是在“if have last_insert_id then a SELECT INTO ... where id = last_inserted etc. else the snippet below”之间插入一个语句。

CREATE OR REPLACE TEMPORARY TABLE tmp_school AS SELECT * FROM school LIMIT 0;
INSERT INTO school ( school_name ) VALUES ( 'blubb' );
INSERT INTO tmp_school ( school_name ) VALUES ( 'blubb' );
SELECT * FROM tmp_school;

也许你可以试试这个:

INSERT INTO tmp_school (school_name) VALUES ('blubb') RETURNING school_name ; 

如果您在常规(不是临时)中一次插入多个值,效果相同 table:

INSERT INTO school (school_name) VALUES ('blubb'), ('abc'), ('bcd') RETURNING school_name ; 

希望这会有所帮助,如果您的 MariaDB 服务器版本支持此语句

RETURNING 语法与 SELECT 完全相同,因此您也可以使用 RETURNING * :

INSERT INTO school (school_name) VALUES ('blubb'), ('abc'), ('bcd') 
RETURNING * ; 

此查询将向学校插入 3 行 table 并显示相同的 3 行