Sql 在表A中插入数据并使用该数据插入表B时,是否需要在存储过程中进行多次提交
我有一个存储过程,在该存储过程中,我在Sql 在表A中插入数据并使用该数据插入表B时,是否需要在存储过程中进行多次提交,sql,oracle,stored-procedures,commit,oracle12c,Sql,Oracle,Stored Procedures,Commit,Oracle12c,我有一个存储过程,在该存储过程中,我在表T1中插入数据。然后,根据表T1中插入的数据,我必须在表T2中插入数据(参见下面的代码)。我的问题是-我是否需要使用commit两次(在表T1中插入数据后,然后在表T2中插入数据后再次),或者我可以在最后使用它一次,在表T2中插入数据时,我将在该过程会话中加入插入表T1中的数据 CREATE OR REPLACE PROCEDURE FOO AS BEGIN INSERT INTO T1 (ID, NAME, PHONE) SELECT ID, NAM
表T1
中插入数据。然后,根据表T1
中插入的数据,我必须在表T2
中插入数据(参见下面的代码)。我的问题是-我是否需要使用commit代码>两次(在表T1
中插入数据后,然后在表T2
中插入数据后再次),或者我可以在最后使用它一次,在表T2
中插入数据时,我将在该过程会话中加入插入表T1
中的数据
CREATE OR REPLACE PROCEDURE FOO
AS
BEGIN
INSERT INTO T1 (ID, NAME, PHONE)
SELECT ID,
NAME,
PHONE
FROM CUST;
COMMIT; --Do I really need to use this commit here?
INSERT INTO T2 (ID,NAME,CITY)
SELECT C.ID,
C.NAME,
C.CITY
FROM CUST C
JOIN T1 X
ON X.ID = C.ID
COMMIT;
END FOO;
不,你不必把那件事放在第一位。第二次提交完成了任务。一般来说,您不应该将提交放在过程中,除非它是一个自治事务。In:“我坚信事务控制必须在调用程序级别的最顶层完成。”因此,在调用过程后提交所有提交。在此处了解事务: