我编写了一个简单的存储过程,其中的 while 循环不起作用。这里有一些数据给你:父表是 data_client_id。这些表都是innoDB。主键是 ID。架构中带有 data_ 前缀的所有其他表都将此 (data_client_id.id) 列作为外键。我生成了一些虚拟数据并将其插入到自动递增主键的 data_client_id 表中。生成的行是 33 到 132。我的目的是编写一个存储过程,该过程将在 id 列中为所有其他 data_ 表创建具有匹配值的行。
这是我的代码:
mysql> DELIMITER //
mysql> CREATE PROCEDURE this()
-> BEGIN
-> DECLARE v1 INT;
-> SET v1 = 33;
-> WHILE v1 < 132 DO
-> INSERT INTO data_banking (id) VALUES(v1);
-> SET v1 = v1+1;
-> END WHILE;
-> END//
Query OK, 0 rows affected (0.00 sec)
然后当我调用 this(); 过程 我收到以下错误:
mysql> call this();
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`oms_clients`.`data_banking`, CONSTRAINT `data_banking_FK` FOREIGN KEY (`id`) REFERENCES `data_client_id` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)
我尝试像这样在 data_ 表中运行独立的 INSERT: INSERT into data_banking (id) VALUES (34);
它可以将所有默认设置为 NULL 或它们各自的 SET 默认值的列...