Reputation: 12230
I am using HSQLDB 2.6.1. I am trying to use ON DUPLICATE KEY UPDATE
in a stored procedure. Specifically, I want the UPDATE
portion to refer to column values from the SELECT
portion.
create table car(
id int,
quantity int,
primary key(id)
);
insert into car values
(1, 100),
(2, 200),
(3, 300);
create procedure insert_update_quantities(in new_quantity int)
modifies sql data
begin atomic
declare table car_quantities (car_id int, car_quantity int);
insert into car_quantities values
(1, new_quantity),
(2, new_quantity),
(3, new_quantity),
(4, new_quantity),
(5, new_quantity);
insert into car (id, quantity)
select car_id, car_quantity from car_quantities
on duplicate key update quantity = quantity + car_quantity;
end;
The above code throws an error when I try to create the procedure. The error says that car_quantity
(in the UPDATE
portion) is not recognized. When I replace car_quantity
with a number, the procedure is created.
I have seen this answer and this documentation, and it seems to me like my code was supposed to work.
What is wrong with my code?
Upvotes: 0
Views: 77
Reputation: 24372
The INSERT is for the table car
. The new values for the column quantity
can be specified using VALUES(quantity)
create procedure insert_update_quantities(in new_quantity int)
modifies sql data
begin atomic
declare table car_quantities (car_id int, car_quantity int);
insert into car_quantities values
(1, new_quantity),
(2, new_quantity),
(3, new_quantity),
(4, new_quantity),
(5, new_quantity);
insert into car (id, quantity)
select car_id, car_quantity from car_quantities
on duplicate key update quantity = quantity + values(quantity);
end;
Upvotes: 1