Oracle:提交表更改后执行立即(或提交)

时间:2017-02-28 22:55:05

标签: oracle oracle11g dynamic-sql database-trigger

如果下面的代码创建了反映表'NAMES'中的数量或行的表,我希望如此。

示例:在将1行插入NAMES后,应该创建一个名为t1的表。

相反,这将创建一个名为t0的表,因为该过程在提交对NAMES的更改之前运行。如何在提交行后运行此过程?

CREATE TABLE NAMES
(
    TABLENAMES varchar(1)
);

/
CREATE OR REPLACE PROCEDURE CREATETABLES AS  
  NAMESROWS NUMBER(3);
 BEGIN

   SELECT COUNT(*) INTO NAMESROWS  FROM NAMES;

   EXECUTE IMMEDIATE 'CREATE TABLE t' || NAMESROWS || ' ( bCOL NUMBER(1))';

END CREATETABLES;

/
CREATE OR REPLACE TRIGGER CREATETABLETRIGGER
 AFTER INSERT OR UPDATE OR  DELETE ON NAMES
  DECLARE PRAGMA AUTONOMOUS_TRANSACTION;
  BEGIN
    CREATETABLES;
  END;
/
INSERT INTO NAMES VALUES (2);

0 个答案:

没有答案
相关问题