如果下面的代码创建了反映表'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);