Я пытаюсь добавить записи в свои таблицы customization_field prestashop, по одной для каждого из наших продуктов. Я написал эту команду:
CREATE PROCEDURE test5 () BEGIN
DECLARE a INT;
SET a = 1461;
WHILE (a <= 3185) DO insert into ps7h_customization_field values (DEFAULT, `a`, `1`, `0`, `0`, `0`, `0`);
SELECT a = a + 1;
END WHILE;
END;
1461 - идентификатор первого продукта, 3185 - идентификатор последнего. Структура таблицы:
id_customization_field int(10) AUTO_INCREMENT
id_product int(10)
type tinyint(1)
required tinyint(1)
is_module tinyint(1)
is_deleted tinyint(1)
tshirtecommerce tinyint(1)
Мне нужна строка для каждого продукта с product_id от 1461 до 3185, каждый с новым номером id_customization_field. Команда выполняется, но возвращает 0 результатов. Что я делаю неправильно?
3 ответа
drop table if exists t;
create table t
(id int auto_increment primary key,col1 varchar(1),col2 varchar(1),col3 varchar(1),col4 varchar(1),col5 varchar(1),col6 varchar(1));
drop procedure if exists p;
delimiter $$
CREATE PROCEDURE p()
BEGIN
DECLARE a INT;
SET a = 5;
WHILE a <= 5 DO
insert into t values (null, 'a', '1', '0', '0', '0', '0');
set a = a + 1;
END WHILE;
END $$
delimiter ;
call p();
select * from t;
+----+------+------+------+------+------+------+
| id | col1 | col2 | col3 | col4 | col5 | col6 |
+----+------+------+------+------+------+------+
| 1 | a | 1 | 0 | 0 | 0 | 0 |
+----+------+------+------+------+------+------+
1 row in set (0.001 sec)
NB протестировано в heidisql.
SELECT должен быть SET, и вам не нужен DEFAULT, если это AutoIncrement и обратные кавычки не требуются для числовых значений, вам и не нужно их окружать a
, но это не повредит.
CREATE PROCEDURE test5 ()
BEGIN
DECLARE a INT;
SET a = 1461;
WHILE (a <= 3185)
DO insert into ps7h_customization_field values (`a`, 1, 0, 0, 0, 0);
SET a = a + 1;
END WHILE;
END;
Не используйте обратные кавычки, не присваивайте значение столбцу с автоинкрементом и не присваивайте правильное значение столбцам (значение a
с обратными кавычками - это не int, а имя столбца)
insert into ps7h_customization_field
( id_product, type, required,is_module,is_deleted,tshirtecommerce)
values (a, 1, 0, 0, 0, 0)
Новые вопросы
mysql
MySQL - это бесплатная система управления реляционными базами данных с открытым исходным кодом (RDBMS), использующая язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. Д. Это разные БД, которые все используют свои собственные диалекты SQL для управления данными.