我试图生成一堆折扣代码。这些都有外键关键。
目前我有
INSERT INTO code (title, code, desc) VALUES ('code1','XPISY9','test code');
INSERT INTO code_details (code_id, used, attempts) VALUES (
SELECT code_id from code where code = 'XPISY9',0,0);
code_details中的code_id是代码表中code_id的外键。
创建循环的最佳方法是什么,我可以生成一组这些值(大约100)。我需要代码是一个不重复的随机值。
任何帮助将不胜感激。
感谢
答案 0 :(得分:0)
在代码表中有100个左右的记录后,您可以在一个语句中添加代码详细信息:
INSERT INTO code_details (code_id, used, attempts)
SELECT code, 0, 0
FROM code;
首先生成代码记录是另一回事,最好通过使用其他工具在文本文件中生成100个插入语句来完成,然后再执行。
我已经看到可以使用每种脚本语言完成 - 选择你喜欢的。我甚至看到Excel与id和字符串公式的列一起使用来生成insert语句。
答案 1 :(得分:0)
感谢帮助人员。我决定为此制定一个程序并且效果很好:
DELIMITER $$
CREATE PROCEDURE vouchergen(IN length INT(10) ,IN duration VARCHAR(20),IN sponsor VARCHAR(20),IN amount INT(10))
BEGIN
DECLARE i INT DEFAULT 1;
WHILE (i< amount) DO
SET @vcode= CONCAT(BINARY brand , UPPER(SUBSTRING(MD5(RAND()) FROM 1 FOR 6)));
INSERT INTO code (title, code, desc) VALUES (CONCAT(brand,i),@vcode,CONCAT(length,' ',duration));
INSERT INTO code_details (code_id, used, attempts) VALUES (
SELECT code_id from code where code = @vcode,0,0);
SET i=i+1;
END WHILE;
END$$;
然后,我可以将其称为gen,但我想要的却是:
CALL vouchergen(1,'week',APPL,400);
CALL vouchergen(1,'month',APPL,100);
CALL vouchergen(1,'day',APPL,200);