테이블에 데이터를 삽입하고 싶습니다. 데이터가 삽입되면 사람들은 전체 테이블에서 하나의 열만 업데이트 할 수 있습니다. 나는 이것에 아래에 시도한다 그러나 나는 오류를 얻는다 - ORA-04092 : 방아쇠에서 COMMIT 또는 ROLLBACK 할 수 없다 :ORACLE PL/SQL - GRANT/REVOKE 권한
나의 방아쇠는 여기있다. 내 생각은 사용자가 데이터를 삽입 할 수있는 모든 권한을 부여하는 것이 었습니다. 데이터가 삽입 된 후 하나의 열에 대해서만 UPDATE 권한을 제거하십시오. 이 테이블이 있다고 가정 해 보겠습니다.
CREATE TABLE tabelName(
col1 INTEGER,
col2 INTEGER,
col3 INTEGER,
col4 INTEGER
);
CREATE OR REPLACE TRIGGER TRG_TABLENAME_BI
BEFORE INSERT
ON TABLENAME
BEGIN
EXECUTE IMMEDIATE 'GRANT ALL ON TABLENAME TO PUBLIC';
END;
/
CREATE OR REPLACE TRIGGER TRG_TABLENAME_AI
AFTER INSERT
ON TABLENAME
BEGIN
EXECUTE IMMEDIATE 'REVOKE UPDATE (col1,col2,col3) TABLENAME to PUBLIC';
END;
/
마지막으로 우리는 테이블에 데이터를 삽입 한 후 tableName의 col4 만 업데이트 할 수 있습니다. 우리가 할 경우
UPDATE tableName
SET col2= 10
WHERE col1=1;
을하지만 난 그것을 알아낼 방법을 잘 모릅니다 :
INSERT INTO tableName VALUES(1,2,3,4);
1 row created
난 단지 습관 일 다음이 UPDATE
UPDATE tableName
SET col4= 10
WHERE col1=1;
을 할 수 있습니다. 감사합니다.
'테이블 레벨'에'부여 인서트'를하지만,'컬럼 레벨'에서만'부여 갱신 '을합니다. –