我想知道是否可以在触发器内创建用户。尽管我认为我的代码在语法上是正确的,但我收到了错误。我可以在触发器内创建用户吗?
下面是代码
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.