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 Trigger
ON INSERT
操作来达到您的目的。在此触发更新邮件的正文中,并根据自动递增的 id 值获取相应的值。
我正在使用以下语句复制 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 Trigger
ON INSERT
操作来达到您的目的。在此触发更新邮件的正文中,并根据自动递增的 id 值获取相应的值。