2010-03-05 99 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)