2010-03-05 100 views
0

我想为我的产品制作编码代码。在SQL命令中迭代50次

我已经创建了一个适当的SQL语句,它基本上使用当前时间戳并在其上运行SHA1。

我尝试了,而以前在我的INSERT命令创建一个迭代循环,但未能

有谁知道怎么样?

Do 50 times 
    INSERT INTO ...... 
end 

另外,我不能有两个相同的促销代码,以便时间戳需要为每个迭代不同(如果它是在所有可能的时间戳可能是迭代之间的相同)。

+1

使用时间戳和计数器不是更容易吗? – 2010-03-05 07:29:46

回答

1

用python或其他脚本语言编写代码。 对促销代码使用GUID,而不是时间戳记的散列。

0

这是很肮脏的,但如果你有你的系统,你知道有超过50行的任何表,您可以执行以下操作:

create table promotion_code (pc varchar(100)); 
set @c = 1; 
insert into promotion_code 
    select sha1(now() + (@c := @c + 1)) 
    from mysql.help_relation limit 50; 
0
CREATE PROCEDURE createPromotions(p1 INT) 
BEGIN 
    SET @x = 0; 
    REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT; 
END 

某种像这样的过程会很好,但我不知道如何把它变成我需要的格式。这是重复一次SQL语句的50倍

+0

请参阅http://stackoverflow.com/questions/2385168/iterate-50-times-over-an-sql-command/6153421#6153421 – High6 2011-05-27 14:08:27

1

您使用PROCEDURE的方法是我猜的最好的。我会首先设置另一个分隔符,因为您正在使用';'已经:

delimiter // 

之后,定义您的程序。 INSERT INTO ......是你的INSERT代码,你在你的问题中写了什么。

CREATE PROCEDURE createPromotions(p1 INT) 
BEGIN 
    SET @x = 0; 
    REPEAT 
    SET @x = @x + 1; 

    INSERT INTO ...... 

    UNTIL @x > p1 
    END REPEAT; 
END 
// 

进入'//'后,程序准备好CALL。如果你想执行它50次,只需要调用它50次:

CALL createPromotions(50)