我有一个要求......假设我们有三个表
1.A
primary key a_id
2.B
primary key b_id
foreign key a_id
3.C
primary key c_id
foreign key b_id
这些表格各包含10 records
需要:现在我要删除每个表中的特定记录。记录将作为a_id(表A的主键)提供的值删除。它将从A中删除,但我怎么能从c中删除它,因为它不包含a_id,这只是我们已知的值。
所以怎么做...任何人都可以请让我知道任何方法或任何事情。我需要删除每个表中的特定记录。起始点是a_id,这只是我们所知道的事情。
我使用的是oracle 10g,我不能使用任何sys表。这是dba给予管理员访问权限的要求。
答案 0 :(得分:1)
你可以在 ON DELETE CASCADE 选项
的帮助下完成见here
答案 1 :(得分:0)
我使用表脚本如下:
CREATE TABLE A (a_id NUMBER CONSTRAINT a_pk PRIMARY KEY,a_grade CHAR(1));
CREATE TABLE b
( b_id NUMBER ,
b_grade CHAR(1),
CONSTRAINT b_pk PRIMARY KEY(b_id),
CONSTRAINT b_fk FOREIGN KEY (b_id) REFERENCES A(a_id)
ON DELETE CASCADE );
CREATE TABLE c
( c_id NUMBER,
c_grade CHAR(1),
CONSTRAINT c_pk PRIMARY KEY(c_id),
CONSTRAINT c_fk FOREIGN KEY(c_id)
REFERENCES b(b_id)
ON DELETE CASCADE );
BEGIN
INSERT INTO A VALUES(1,'a');
INSERT INTO b VALUES(1,'b');
INSERT INTO c VALUES(1,'c');
end;
/*below is the query that you provide in the table a to delete */
DELETE FROM A WHERE a_id=1;-- all tables values are deleted (parent and childs)
SELECT * FROM A;
SELECT * FROM b;
SELECT * FROM c;
希望这就是你所需要的。