How to insert a Trigger Insert into the Inventory table after Insert in the Product table in IBM DB2

1

I'm trying to learn the basics of DB2 and have modeled a database where I need to insert a default value for each product in the "product" table as shown below. This insertion is performed by a trigger that works with the proper syntax in both MYSQL and Oracle. In IBM DB2 V11 EXPRESS-C, however, I can not even insert the trigger because I get the message "Failed queries = > 4". I've checked some examples of triggers for DB2 and I can not figure out which error I'm making.

Below is a table clipping, trigger and system response

- -----------------------------------------------------
-- Table lojamodel.produto
-- -----------------------------------------------------
CREATE TABLE produto (
  idProduto INT NOT NULL PRIMARY KEY
  GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1),
  prod_nome VARCHAR(45) NOT NULL,
  prod_descricao VARCHAR(60) NOT NULL,
  prod_grupo VARCHAR(15) NOT NULL,
  prod_codigo13d VARCHAR(13) NOT NULL,
  prod_codloja VARCHAR(5) NOT NULL,
  prod_fornecid INT NOT NULL,
  FOREIGN KEY (prod_fornecid)
    REFERENCES fornecedor (idFornecedor)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

-- Produtos 
insert into produto (prod_nome, prod_descricao, prod_grupo, prod_codigo13d, prod_codloja, prod_fornecid) values('Notebook ABCERF M15', 'Notebook 16G 2T I7 15.6 ', 'Computadores', '7891000001311', '1311', 1);
insert into produto (prod_nome, prod_descricao, prod_grupo, prod_codigo13d, prod_codloja, prod_fornecid) values('Notebook ABCERF M2 S14', 'Notebook 8G 1T I5 14', 'Computadores', '7891000001312', '1312', 1);  
insert into produto (prod_nome, prod_descricao, prod_grupo, prod_codigo13d, prod_codloja, prod_fornecid) values('Monitor AFODCS 24', 'Monitor 24" LED', 'Monitores', '7891000001321', '1321', 2);
insert into produto (prod_nome, prod_descricao, prod_grupo, prod_codigo13d, prod_codloja, prod_fornecid) values('Monitor AFODCS21', 'Monitor 21,5" LED', 'Monitores', '7891000001322', '1322', 2);



CREATE TABLE estoque (
  idestoque INT NOT NULL PRIMARY KEY
  GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1),
  est_quantidade INT NOT NULL DEFAULT '0',
  est_precovenda FLOAT NOT NULL DEFAULT '0.00',
  est_minquant INT NOT NULL DEFAULT '1',
  est_prodid INT NOT NULL,
  FOREIGN KEY (est_prodid)
    REFERENCES produto (idProduto)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);


-- Meu  Trigger 

CREATE OR REPLACE TRIGGER insere_estoque  
AFTER INSERT ON produto  
FOR EACH ROW MODE DB2SQL
BEGIN
  declare v_codigo int default 0;
  set v_codigo = (select max(idproduto) from produto);
  insert into estoque (est_quantidade, est_precovenda, est_minquant, est_prodid) values (0, 0.00, 2, v_codigo);
END@


--  DB2 Resultado de SQL 
Script2.sql

CREATE TRIGGER insere_estoque
AFTER INSERT ON produto
FOR EACH ROW MODE DB2SQL

BEGIN
declare v_codigo int default 0
set v_codigo = (select max(idproduto) from produto)
insert into estoque (est_quantidade, est_precovenda, est_minquant, est_prodid) values (0, 0, 2, v_codigo)
END
  

Failed queries = > 4

     

Total execution time = > 0 ms

    
asked by anonymous 12.05.2018 / 20:22

0 answers