ورود

View Full Version : سوال: Create User در تریگر



ali643
سه شنبه 25 تیر 1392, 16:19 عصر
سلام دوستان

یک جدول دارم که مشخصات یه دانشجو رو میگیره من می خوام که یک تریگر رو جدول بنویسم که بعد از insert اعمال بشه و یک کاربر جدید در پایگاه داده ایجاد بشه

کد تریگر من به این صورت هست که برای ساختن کاربر جدید یک procedures ساختم و در تریگر اونو صدا زدم


CREATE OR REPLACE PROCEDURE "ALIAS"."PROC_CREATESTUDENT_USER" (user_id in VARCHAR2,pwd in VARCHAR2) AS
BEGIN
EXECUTE IMMEDIATE 'CREATE USER '||dbms_assert.enquote_name(user_id,FALSE)||' IDENTIFIED BY ' ||dbms_assert.enquote_name(pwd,FALSE)||' ACCOUNT UNLOCK';
EXECUTE IMMEDIATE 'GRANT CONNECT TO '||dbms_assert.enquote_name(user_id,FALSE);
EXECUTE IMMEDIATE 'GRANT ROLE_STUDENT TO '||dbms_assert.enquote_name(user_id,FALSE);
end;
/


کد تریگر هم به این صورته



CREATE OR REPLACE TRIGGER "ALIAS"."T_CREATE_USERNAMEFORSTUDENT" AFTER
INSERT ON "ALIAS"."STUDENT" REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW begin
PROC_CREATESTUDENT_USER(:new.sid,:new.sid);
end;
/
ALTER TRIGGER "ALIAS"."T_CREATE_USERNAMEFORSTUDENT" ENABLE;

کد جدول


CREATE TABLE "ALIAS"."STUDENT" ( "SID" NUMBER, "NAME" VARCHAR2(25), "FAMILY" VARCHAR2(25), "TEL" VARCHAR2(15), "ADDRESS" VARCHAR2(250), "DEPID" NUMBER, CONSTRAINT "F_DEPID" FOREIGN KEY ("DEPID") REFERENCES "ALIAS"."DEPARTMENT" ("DEPID") VALIDATE , PRIMARY KEY ("SID") VALIDATE ) TABLESPACE "SYSTEM" PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE ( INITIAL 64K FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) LOGGING NOCOMPRESS


مقدار sid شماره دانشجویی در جدول هستش که کاربری می خواهیم بسازیم که نام کاربریش و رمزعبورش برابر شماره دانشجویی باشه.
الان مشکل من ایم هست که کاری که باید بکنه رو نمی کنه و همش پیغام خطا می ده.
به نظرتون مشکل از کجاست؟

با تشکر.