我在外键上有一个列表分区表.因此,如果我想插入一个新实体,则缺少的分区会在插入时引发异常.我以为我是一个很酷的公爵,并使用触发器来创建新的分区:-)但是在执行期间分区将不可用.如果你稍等一下,一切正常(但dbms_lock.sleep不会做的伎俩).
所以这是我的触发器(以及需要的程序) - 注意结束附近的"检查分区部分"
CREATE OR REPLACE PROCEDURE Execute_DDL
(i_sql IN VARCHAR2)
AS
pragma autonomous_transaction;
BEGIN
EXECUTE IMMEDIATE (i_sql);
commit;
END;
/
Run Code Online (Sandbox Code Playgroud)
.
CREATE OR REPLACE TRIGGER Q_FLD_NEW_PART_TRG
AFTER INSERT
ON Q_FLD
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
l_cnt number;
l_wait_cnt number := 0;
l_alter varchar2(1000);
l_job_stmt varchar2(1000);
l_job_nr number;
l_job dba_jobs_running%rowtype;
BEGIN
SELECT count(*) INTO l_cnt from user_tables
where table_name = 'QUOTE' and partitioned = 'YES';
if l_cnt <= 0 then return; end if; …Run Code Online (Sandbox Code Playgroud)