dbTalk Databases Forums  

BOM QUERY IN TRIGGER

comp.databases.ibm-db2 comp.databases.ibm-db2


Discuss BOM QUERY IN TRIGGER in the comp.databases.ibm-db2 forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Massimiliano Campagnoli
 
Posts: n/a

Default BOM QUERY IN TRIGGER - 10-08-2007 , 11:22 AM






I am not able to use a recursive query (BOM query) inside a trigger in
DB2 V7.2

Something like this:

CREATE TRIGGER my_trigger
AFTER INSERT ON my_table
REFERENCING NEW AS NRS
FOR EACH ROW MODE DB2SQL

BEGIN ATOMIC

IF (WITH RPL (LVL, CODART, CODLOT, CQGEN) AS
(SELECT 1, ROOT.CODART, ROOT.CODLOT, ROOT.CQGEN
FROM my_table ROOT WHERE ROOT.CQGEN = NRS.CQGEN

UNION ALL

SELECT PARENT.LVL+1, CHILD.CODART, CHILD.CODLOT, CHILD.CQGEN
FROM RPL PARENT, my_table CHILD
WHERE PARENT.CODLOT=CHILD.CQGEN AND PARENT.LEVEL < 20 )

SELECT COUNT(*) FROM RPL WHERE CODART LIKE '4NAC45%') > 0

THEN SIGNAL SQLSTATE '70444';

END


Reply With Quote
  #2  
Old   
jefftyzzer
 
Posts: n/a

Default Re: BOM QUERY IN TRIGGER - 10-08-2007 , 12:42 PM






On Oct 8, 9:22 am, Massimiliano Campagnoli <m... (AT) paoloastori (DOT) com>
wrote:
Quote:
I am not able to use a recursive query (BOM query) inside a trigger in
DB2 V7.2

Something like this:

CREATE TRIGGER my_trigger
AFTER INSERT ON my_table
REFERENCING NEW AS NRS
FOR EACH ROW MODE DB2SQL

BEGIN ATOMIC

IF (WITH RPL (LVL, CODART, CODLOT, CQGEN) AS
(SELECT 1, ROOT.CODART, ROOT.CODLOT, ROOT.CQGEN
FROM my_table ROOT WHERE ROOT.CQGEN = NRS.CQGEN

UNION ALL

SELECT PARENT.LVL+1, CHILD.CODART, CHILD.CODLOT, CHILD.CQGEN
FROM RPL PARENT, my_table CHILD
WHERE PARENT.CODLOT=CHILD.CQGEN AND PARENT.LEVEL < 20 )

SELECT COUNT(*) FROM RPL WHERE CODART LIKE '4NAC45%') > 0

THEN SIGNAL SQLSTATE '70444';

END
Please include the error you're receiving.

--Jeff



Reply With Quote
  #3  
Old   
Serge Rielau
 
Posts: n/a

Default Re: BOM QUERY IN TRIGGER - 10-08-2007 , 10:16 PM



CREATE TRIGGER my_trigger
AFTER INSERT ON my_table
REFERENCING NEW AS NRS
FOR EACH ROW MODE DB2SQL
WITH RPL (LVL, CODART, CODLOT, CQGEN) AS
(SELECT 1, ROOT.CODART, ROOT.CODLOT, ROOT.CQGEN
FROM my_table ROOT WHERE ROOT.CQGEN = NRS.CQGEN

UNION ALL

SELECT PARENT.LVL+1, CHILD.CODART, CHILD.CODLOT, CHILD.CQGEN
FROM RPL PARENT, my_table CHILD
WHERE PARENT.CODLOT=CHILD.CQGEN AND PARENT.LEVEL < 20 )

SELECT CAST(RAISE_ERROR('70444', '') FROM RPL WHERE CODART
LIKE '4NAC45%'

WITH can't be nested (it's part of select-statement, not fullselect)

Cheers
Serge
--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab

Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.