我想知道是否可以在觸發器內創建用戶。儘管我認爲我的代碼在語法上是正確的,但我收到了錯誤。我可以在觸發器內創建用戶嗎?
下面是代碼
CREATE OR REPLACE TRIGGER addUser
BEFORE INSERT
ON PLSQL_TEST_USERS
FOR EACH ROW
DECLARE
n VARCHAR2(20) := :new.name;
p VARCHAR2(20) := :new.password;
BEGIN
dbms_output.put_line(n);
EXECUTE IMMEDIATE ('CREATE USER n IDENTIFIED BY p');
END;
/
所以是有可能做到這一點?
下面是我收到的錯誤:
INSERT INTO PLSQL_TEST_USERS VALUES (1, 'rob', 'asdf')
Error report -
SQL Error: ORA-04092: cannot COMMIT in a trigger
ORA-06512: at "SYSTEM.ADDUSER", line 6
ORA-04088: error during execution of trigger 'SYSTEM.ADDUSER'
04092. 00000 - "cannot %s in a trigger"
*Cause: A trigger attempted to commit or rollback.
*Action: Rewrite the trigger so it does not commit or rollback.