请考虑以下问题-
DELIMITER $
BEGIN NOT ATOMIC
IF (Select count(*) from t1 where name = 'test') = 0 THEN
INSERT into t1(categoryId,name, language)
values
(NextVal(categorySequence),'test','en-US'),
(LastVal(categorySequence),'test','de-DE');
END IF ;
END $
DELIMITER ;
我想插入两个具有相同“categoryid”的记录。要生成categoryid,我使用的是mariadb序列https://mariadb.com/kb/en/library/sequence-overview/. nextval()返回下一个序列号,lastval()返回上一个序列号(与nextval()函数相同)。如果insert语句的顺序是从左到右(我在测试中发现),那么上面的查询可以正常工作。示例:“ insert into x values('1'), ('2')
". '“1”将先插入“2”,但我不确定mariadb是否始终遵循此顺序。请帮助我插入订单或建议我一些不同的查询。
1条答案
按热度按时间xn1cxnb41#
没关系。mariadb确保每个插入使用不同的序列值。
你为什么那么在乎谁先被处死?如果确实需要确保特定的插入顺序,则执行两个单独的insert sql语句。