目前我正在学习SQL并开始遇到某些触发器的问题.这是非常基本的,但我不知道如何解决它.
问题是这样的:我有两个表Person和BankAccountInfo.表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)
这是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
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |