oracle 用trigger动态创建表格
各位大哥大姐.
小弟在创建trigger 遇到一个问题.帮帮忙吧!
在表eqdb_platform 中插入记录 之前先检查 相关联另外的一个表格是不是存在. 如果不存在就创建.
CREATE OR REPLACE TRIGGER eqdb_platform_bi
BEFORE INSERT ON eqdb_platform
FOR EACH ROW
DECLARE
v_count int ;
v_platform VARCHAR2(10) ;
v_area VARCHAR2(10) ;
v_tablename VARCHAR2(20);
sql_stmt VARCHAR2(200);
BEGIN
v_platform := :NEW.platform;
v_tablename := :NEW.tablename;
v_area := :NEW.area;
SELECT count(*) INTO v_count FROM user_tables
WHERE table_name=v_tablename;
IF v_count < 1 THEN
sql_stmt := 'CREATE TABLE '|| v_tablename || ' AS SELECT * FROM EQDB_DETAILS_J971 WHERE rownum < 1';
EXECUTE IMMEDIATE sql_stmt;
END IF;
END;
trigger 创建时 没问题. 执行时出错.
SQL> /
Trigger created.
SQL> INSERT INTO eqdb_platform(platform,tablename,vendor,area) values ('J973','EQDB_DETAILS_J973','Teradyne','Probe')
2 ;
INSERT INTO eqdb_platform(platform,tablename,vendor,area) values ('J973','EQDB_DETAILS_J973','Teradyne','Probe')
*
ERROR at line 1:
ORA-04092: cannot COMMIT in a trigger
ORA-06512: at "PROBEWEB.EQDB_PLATFORM_BI", line 15
ORA-04088: error during execution of trigger 'PROBEWEB.EQDB_PLATFORM_BI'
SQL>