MySQL 使用连续数字插入

MySQL insert using continuous number

我正在使用以下语句复制 table 中的一行:

insert into Buyer (
    version, creationDate, password, token, username, zip, city, lastname, firstname, preferredLanguage_id, title_id, contactEmail_id, active
) select
    version, creationDate, password, token, "loadtest_1@example.com", zip, city, lastname, firstname, preferredLanguage_id, title_id, contactEmail_id, active
from Buyer where username="developer_de@example.com";

我唯一改变的是username/email。现在要插入的新用户名中的数字 "loadtest_1@example.com" 应该每次都递增。所以第二个应该是 loadtest_2..., loadtest_3 等等。我真的不在乎它是从什么开始的,只要它是连续的,所以取新插入行的ID之类的就完全可以了。

额外的荣誉关于如何实际创建一批这些插入的想法,这样我就不必 运行 它 X 次。

您正在选择并插入相同的 table,唯一的变化是 username。我看到的是你需要一个 UPDATE 声明而不是

update Buyer set username = 'loadtest_1@example.com'
where username="developer_de@example.com";

如果它是测试并且您确实想插入测试数据说 loadtest_1@example.com .. loadtest_100@example.com 那么您可以使用 while 循环,例如

CREATE PROCEDURE usp_inserttestdata(total INT)
AS
BEGIN
DECLARE counter INT;
DECLARE uname varchar(20);

   SET counter = 1;

   label1: WHILE counter <= total DO

    SET uname = concat('loadtest_', counter, '@example.com');     

   insert into Buyer (
    version, creationDate, password, token, username, zip, city, lastname, 
    firstname, preferredLanguage_id, title_id, contactEmail_id, active) 
   select version, creationDate, password, token, uname, zip, city, lastname, firstname, 
   preferredLanguage_id, title_id, contactEmail_id, active
   from Buyer where username="developer_de@example.com";

   SET counter = counter + 1;

   END WHILE label1;
END

然后调用程序说

CALL usp_inserttestdata 1000

您可以使用AFTER TriggerON INSERT操作来达到您的目的。在此触发更新邮件的正文中,并根据自动递增的 id 值获取相应的值。