遇到sql触发器问题

0 sql oracle triggers

目前我正在学习SQL并开始遇到某些触发器的问题.这是非常基本的,但我不知道如何解决它.

问题是这样的:我有两个表PersonBankAccountInfo.表Person includes personal information. as identification number, name, birth date, etc. . TheBankAccountInfo`表包含Person 表中每个人的银行信息.

Person (ID number (12) primary key
      , name varchar (60)
      , phone number 
      , ...)

BankAccountInfo (ID number (12) references Person
                 , bankaccount number (8) primary key
                 , ...)
Run Code Online (Sandbox Code Playgroud)

我想要的是当我删除一个人时,这个人的行也会从表BankAccountInfo中删除,DELETE Person WHERE ID = 123456.

问题是我不知道信息是如何进入触发器的

CREATE 
TRIGGER DELETEINFO
BEFORE DELETE ON Person
BEGIN
DELETE BankAccountInfo where ID = ?????? <- What do i put here?
END;
Run Code Online (Sandbox Code Playgroud)

Pop*_*Pop 9

这是Oracle吗?您只需使用父表的delete cascade选项创建外键,Oracle将在删除此人时删除银行帐户信息:

CREATE TABLE BankAccountInfo (
ID number (12) references Person ON DELETE CASCADE,
bankaccount number (8) primary key, ...)
Run Code Online (Sandbox Code Playgroud)

否则,如果您仍想知道如何在Oracle触发器中访问行值,请使用:new和:old implicit cursors(对于delete trigger,:old.ID应该可以执行此操作).

有关约束的更多信息,请访问:http: //download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_constraints.htm#i1006974