Mysql 或null。这不是受支持的用例。即使你找到了一个有效的解决方案,它也可能在将来的任何时候崩溃,你可以保留这些碎片。 insert into mytable (colA) select 'foo' from bar where <some condit
Mysql 或null。这不是受支持的用例。即使你找到了一个有效的解决方案,它也可能在将来的任何时候崩溃,你可以保留这些碎片。 insert into mytable (colA) select 'foo' from bar where <some condit,mysql,auto-increment,last-insert-id,Mysql,Auto Increment,Last Insert Id,或null。这不是受支持的用例。即使你找到了一个有效的解决方案,它也可能在将来的任何时候崩溃,你可以保留这些碎片。 insert into mytable (colA) select 'foo' from bar where <some condition>; select LAST_INSERT_ID(); @previousId := LAST_INSERT_ID(); insert into mytable (colA) select 'foo' from bar where
或null。这不是受支持的用例。即使你找到了一个有效的解决方案,它也可能在将来的任何时候崩溃,你可以保留这些碎片。
insert into mytable (colA)
select 'foo' from bar
where <some condition>;
select LAST_INSERT_ID();
@previousId := LAST_INSERT_ID();
insert into mytable (colA)
select 'foo' from bar
where <some condition>;
select if(LAST_INSERT_ID() != @previousId, LAST_INSERT_ID(), null);
DELIMITER $$
CREATE TRIGGER MyTable_AI AFTER INSERT ON MyTable FOR EACH ROW
BEGIN
INSERT INTO MyTable_InsertLog (myTableId, ident) VALUES (NEW.myTableId, COALESCE(@tag, CONNECTION_ID()));
END $$
DELIMITER ;
CREATE TABLE MyTable_InsertLog (
myTableId BIGINT UNSIGNED PRIMARY KEY NOT NULL REFERENCES MyTable (myTableId),
tag CHAR(32) NOT NULL
);
SET @tag=MD5('A');
INSERT INTO MyTable SELECT NULL,colA FROM Foo WHERE colA='whatever';
SELECT myTableId FROM MyTable_InsertLog WHERE tag=@tag;
DELETE FROM MyTable_InsertLog WHERE tag=@tag;
insert into mytable (colA)
select 'foo' from bar
where <some condition>;
IF ROW_COUNT() > 0
select LAST_INSERT_ID();
-- ...use selected last_insert_id for other updates/inserts...
END IF;
CREATE TABLE foo (id INTEGER PRIMARY KEY AUTO_INCREMENT, value INTEGER NOT NULL);
CREATE TABLE bar (id INTEGER PRIMARY KEY AUTO_INCREMENT, fooref INTEGER NOT NULL);
INSERT INTO foo(value) VALUES ('1');
INSERT INTO bar(fooref) VALUES (LAST_INSERT_ID());
[ deletia ]
SELECT LAST_INSERT_ID(NULL);
INSERT INTO my_table (my_column) SELECT NULL WHERE LAST_INSERT_ID(NULL);
SET @@last_insert_id := NULL;
select IF(ROW_COUNT() > 0, LAST_INSERT_ID(), 0);