Oracle 테이블에 대한 트리거를 만들려고합니다. 여기에 내가 두 테이블 책, 복사가 요구 사항 (& 사본 책은 1 N 관계에있는 각 책이 0 N에 복사 할 수 있습니다.)입니다Oracle SQL 트리거 삽입 열 값을 기반으로 새 레코드 삽입
도서 테이블 :
CREATE TABLE Book
(
book_id INTEGER NOT NULL ,
isbn VARCHAR2 (20) NOT NULL,
publisher_id INTEGER NOT NULL ,
tittle VARCHAR2 (100) NOT NULL ,
cat_id INTEGER NOT NULL ,
no_of_copies INTEGER NOT NULL ,
....
CONSTRAINT isbn_unique UNIQUE (isbn),
CONSTRAINT shelf_letter_unique UNIQUE (shelf_letter, call_number)
) ;
복사 표
을CREATE TABLE Copies
(
copy_id INTEGER NOT NULL ,
book_id INTEGER NOT NULL ,
copy_number INTEGER NOT NULL,
constraint copy_number_unique unique(book_id,copy_number)
) ;
트리거 (업데이트시, 책 테이블 편집)는 해당 사본 레코드를 Copies 테이블에 추가해야합니다. 따라서 Books 테이블에 삽입하면 Book.no_of_copies가 5로 설정되고 5 개의 새 레코드가 Copies 테이블에 삽입되어야합니다.
무엇입니까? 그리고 우리는 어떻게'copy_id'를 결정해야합니까? 예를 들어 'no_of_copies'가 수정 된 경우 5 ~ 3의 복사본 열을 삭제해야합니까? – Passerby
copy_id가 기본 키이며 자동 증가입니다. 5 ~ 3 감소와 관련하여 요구 사항은 응용 프로그램 오류가 발생해야한다고 말합니다 (기본적으로 허용되지 않습니다). 그러나 5에서 7로 증가하면 두 가지 더 많은 기록이 추가되어야합니다. 감사! – user6123723