Я пытался вставить некоторые примеры данных в таблицу, но процессор командной строки db2 возвращает это сообщение: «DB21034E Команда была обработана как оператор SQL, поскольку она не была действительной командой процессора командной строки. Во время обработки SQL она вернула:SQL0723N В триггерном операторе SQL в триггере «EDWIN.CALLCQ» произошла ошибка. Информация, возвращаемая для ошибки, включает SQLCODE "-724"
, SQLSTATE "54038"
и токены сообщения «EDWIN.CHKQUANTITY | PROCEDURE». SQLSTATE = 09000 "
Вот моя процедура
create procedure chkQuantity (Cart_ID int,Food_ID int, Food_Quantity int)begin declare c cursor with return for select sum(Food_Quantity) from Cart_details group by Cart_ID;open c; If(Food_Quantity <= 10)then insert into cart_details(Cart_ID,Food_ID,Food_Quantity) values (Cart_ID , Food_ID ,Food_Quantity);Else signal sqlstate'45000' set message_text = '1 Cart Maximum order only 10 food Quantity' ;delete from cart_details where cart_details_id=cart_details_id; end if;close c; end
триггер
create trigger callCQ after insert on cart_details referencing new as N for each row mode db2sql call chkQuantity(N.Cart_ID, N.Food_ID, N.Food_Quantity)
таблица
create table Cart_Details(Cart_Details_ID int not null primary key ,Cart_ID int , Foreign Key(Cart_ID) references Cart,Food_ID int,foreign key(Food_ID) references Food, Food_quantity int check(food_quantity <= 10))