source

PL/SQL 트리거 내에서 Select 문을 사용하는 구문은 무엇입니까?

factcode 2023. 10. 6. 22:03
반응형

PL/SQL 트리거 내에서 Select 문을 사용하는 구문은 무엇입니까?

이것이 현재 제가 가지고 있는 것입니다.

CREATE OR REPLACE TRIGGER MYTRIGGER
AFTER INSERT ON SOMETABLE
FOR EACH ROW    

DECLARE
 v_emplid varchar2(10);    

BEGIN
 SELECT
  personnum into v_emplid
 FROM PERSON
 WHERE PERSONID = :new.EMPLOYEEID;

dbms_output.put(v_emplid);

/* INSERT INTO SOMEOTHERTABLE USING v_emplid and some of the other values from the trigger table*/

END MYTRIGGER;    

DBA_ERRES에 오류가 있습니다. PL/SQL: ORA-00923: FROM 키워드가 필요한 곳에서 찾을 수 없습니다.

1) 당신의 예는 다른 것이 있을 것입니다. 왜냐하면 그것은 확실히 저에게 효과가 있는 것 같기 때문입니다.

SQL> create table someTable( employeeid number );

Table created.

SQL> create table person( personid number, personnum varchar2(10) );

Table created.

SQL> ed
Wrote file afiedt.buf

  1  CREATE OR REPLACE TRIGGER MYTRIGGER
  2    AFTER INSERT ON SOMETABLE
  3    FOR EACH ROW
  4  DECLARE
  5   v_emplid varchar2(10);
  6  BEGIN
  7   SELECT personnum
  8     into v_emplid
  9     FROM PERSON
 10    WHERE PERSONID = :new.EMPLOYEEID;
 11    dbms_output.put(v_emplid);
 12    /* INSERT INTO SOMEOTHERTABLE USING v_emplid and some of the other values
 from the trigger table*/
 13* END MYTRIGGER;
 14  /

Trigger created.

SQL> insert into person values( 1, '123' );

1 row created.

SQL> insert into sometable values( 1 );

1 row created.

2) V_EMPLID를 사용자 유형으로 선언할 수 있습니다.사용자번호%TYPE을 사용하면 데이터 유형이 올바른지 확인할 수 있고 테이블의 데이터 유형이 변경되면 코드를 변경할 필요가 없습니다.

3) 트리거가 트리거가 정의된 테이블을 쿼리하거나 업데이트할 수 없음을 알고 있다고 가정합니다(따라서 일부 테이블에 쿼리 또는 삽입되지 않음).

트리거에서 라바(불뿐만 아니라)를 가지고 놀고 있습니다.트리거의 DBMS_OUTPUT은 정말, 정말, 정말로 좋지 않습니다.트리거의 버퍼 오버플로를 차단하면 전체 트랜잭션이 샷됩니다.잘 추적해보세요.출력과 콘솔 간의 유사한 동작을 수행해야 하는 경우 테이블에 기록하는 ANOWNATOUNTRACTION 프로시저를 호출합니다.

방아쇠는 꽤나 사악합니다.예전에는 좋아했는데 기억하기가 너무 어려워요.이러한 데이터는 종종 데이터의 변이로 이어지는 데이터에 영향을 미치며(무섭게 할로윈이 가깝기 때문만은 아닙니다).

트리거를 사용하여 .new와 같은 열의 값을 변경합니다.LAST_MODIED := sysdate 및 .new:마지막_수정됨_BY := 사용자.바로 그겁니다.

트랜잭션이 완료되지 않도록 트리거를 허용하지 않습니다.다른 옵션을 찾습니다.

트리거에 선택문을 사용하지 않습니다.선택한 항목이 아닌 테이블에 삽입합니다.테이블이 이미 존재하면 대부분의 데이터베이스에서 을 선택하지 않습니다.

언급URL : https://stackoverflow.com/questions/202609/what-is-the-syntax-to-use-a-select-statement-inside-a-pl-sql-trigger

반응형