我在ORACLE数据库中编写了一系列SQL语句。在我的数据库中,我有2个表(书籍,出版商)。
以下是表格结构
BOOK
----------
bk_id | title | pub_id
PUBLISHER
----------
pub_id | pub_name
如果我先插入发布商表
INSERT INTO PUBLISHER (pub_name) VALUE ('ABC Publisher');
如何检索发布者的ID并将其输入书表?
我通常使用存储过程(SQL Server)执行此操作或在应用程序中执行此操作。
如何在SQL中的ORACLE中执行此操作?
答案 0 :(得分:1)
我认为最简单的方法是创建一个Trigger
,它会在表后的其他table
中插入。
create or replace trigger tr_ai_publisher
after insert on publisher
for each row
begin
--Here you can access the new publisher id using :new.pub_id
end;
这样,您就不必自己处理程序调用了。
但是,如果你真的想要,你也可以使用ORACLE
中的存储过程,一般语法是
CREATE [OR REPLACE] PROCEDURE proc_name [list of parameters]
IS
Declaration section
BEGIN
Execution section
EXCEPTION
Exception section
END;
答案 1 :(得分:0)
只需使用select语句:
INSERT INTO BOOK VALUES
(bk_id, title, (SELECT pub_id FROM PUBLISHER WHERE pub_name = publisher_name))
…
;
将bk_id,title和publisher_name替换为您想要的相应数据。
答案 2 :(得分:0)
从PL / SQL,您可能希望使用RETURNING INTO
子句来取回新插入的ID:
DECLARE
my_id int;
BEGIN
INSERT INTO PUBLISHER (pub_name) VALUE ('ABC Publisher')
RETURNING id INTO my_id;
...
END;
其中my_id
是根据列类型声明的PL / SQL变量。