[英]DB2 for i SQL delete rows in 2 tables joined by foreign key using child value
I have a parent and a child table joined by parent_id and I want to delete rows from both tables using a value in the child table 我有一个由parent_id连接的父表和一个子表,我想使用子表中的值从两个表中删除行
this is what I tried and it is not working 这是我尝试过的,它不起作用
WITH
-- DELETE THE COSTS FIRST AND LET DB2 STORE THE IDs IN AN 'OLD TABLE'
DELETED_CHILD(ID) AS (SELECT PAYABLE_ID FROM OLD TABLE (
DELETE FROM MYLIB.MYCOST
WHERE KEY_VALUE = '1000000'
)
),
-- DELETE THE PAYABLE HEADER USING THE DELETED_LINK IDs
DELETED_PARENT(ID) AS (SELECT PAYABLE_ID FROM OLD TABLE (
DELETE FROM MYLIB.MYPAYABLE
WHERE PAYABLE_ID IN (SELECT DISTINCT ID FROM DELETED_CHILD)
)
)
(
-- SELECT IN WITH STATEMENT IS MANDATORY USELESS STATEMENT
SELECT * FROM SYSIBM.SYSDUMMY1
);
The Error I get is 我得到的错误是
Error code -199, SQL state 42601: [SQL0199] Keyword TABLE not expected.
错误代码-199,SQL状态为42601:[SQL0199]关键字TABLE不正确。 Valid tokens: ) FETCH ORDER UNION EXCEPT.
有效令牌:)捕获订单联合(例外)。
I want to delete all the children per value and then their parents. 我要删除每个值的所有孩子,然后删除其父母。 Any help is appreciated
任何帮助表示赞赏
Someting like this 像这样
DECLARE GLOBAL TEMPORARY TABLE DELETED_CHILD AS (
SELECT * FROM MYLIB.MYCOST
WHERE KEY_VALUE = '1000000'
) WITH DATA WITH REPLACE NOT LOGGED;
DECLARE GLOBAL TEMPORARY TABLE DELETED_PARENT AS (
SELECT * FROM MYLIB.MYPAYABLE
WHERE PAYABLE_ID IN (SELECT ID FROM QTEMP.DELETED_CHILD)
) WITH DATA WITH REPLACE NOT LOGGED;
DELETE FROM MYLIB.MYCOST
WHERE ID IN (SELECT ID FROM QTEMP.DELETED_CHILD);
DELETE FROM MYLIB.MYPAYABLE
WHERE PAYABLE_ID IN (SELECT PAYABLE_ID FROM QTEMP.DELETED_PARENT ) ;
select PAYABLE_ID, 'CHILD' TYPEDELETED FROM QTEMP.DELETED_CHILD
union all
select PAYABLE_ID, 'PARENT' TYPEDELETED FROM QTEMP.DELETED_PARENT ;
If the Foreign Key relationship has been created with " ON DELETE CASCADE " 如果已使用“ ON DELETE CASCADE ”创建了外键关系
DELETE FROM PARENT
WHERE PARENT_ID in (
SELECT CHILD_ID FROM CHILD_TABLE
WHERE CHILD_FIELD = 'XXXXX'
How to setup the Referential / Foreign Key Constraint : 如何设置引用/外键约束 :
Refer to: W3Schools Foreign Key Constraint 参考: W3Schools外键约束
ALTER TABLE MYLIB.MYCOST
ADD CONSTRAINT fk_MYCOST
FOREIGN KEY ( PAYABLE_ID )
REFERENCES MYLIB.MYPAYABLE( PAYABLE_ID )
ON DELETE CASCADE
ON UPDATE RESTRICT
Referential Constaint Caveats: 引用约束警告:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.