데이터베이스 학습 노트 및 작은 연습 (10) 트리거
2322 단어 데이터베이스
트리거는 이벤트-조건-동작 규칙이라고도 부른다
즉, 이벤트 발생 -> 확인 기준 -> 작업 수행 (조건이 충족된 경우)
사실은 사전에 어떤 시계를 위해 코드를 연결한 것이다. 시계에 대해 어떤 조작(삭제 수정)을 할 때 시스템은 자동으로 코드를 터치하여 실행한다.
# 트리거는 기본 테이블에만 정의할 수 있고 (보기는 지원되지 않음) 테이블을 만든 사용자만 테이블에 트리거를 정의할 수 있습니다.
# 트리거 시간: after는 트리거 이벤트의 작업이 실행된 후에 트리거를 활성화하는 것을 가리키며, before는 이전이다
# 이벤트 트리거: insert delete update일 수도 있고, 몇 개의 이벤트 조합일 수도 있습니다.
# 트리거 객체: 행 트리거와 문장 트리거로 구분하여 트리거 동작의 간격을 나타냅니다.
트리거의 실행은 트리거 이벤트에 의해 활성화되고 데이터베이스 서버에서 자동으로 실행됩니다. 한 데이터 테이블에 여러 개의 트리거가 정의될 수 있습니다(3가지 조작, 두 가지 실행 시간이 있기 때문에 최대 6가지)
1 이 테이블의 before 트리거를 실행합니다
2 트리거 활성화 sql 문장
3 이 표의 after 문장을 실행합니다
(이 세 동작은 하나의 순서의 동작으로 어떤 동작이 실패하더라도 뒤의 동작은 다시 실행하지 않는다)
트리거 생성하기
논리적 완비에서 볼 때 우리는 트리거의 이름을 제시해야 한다. 관련된 것은 어떤 표인지, 어떤 활동에 응답해야 하는지, 언제 응답해야 하는지.
create trigger 트리거 이름 트리거 이벤트 형식 on 테이블 이름
for each row/ statement
[when 트리거 조건]
begin
트리거 내용
end
(한 문장만 있을 때begin.end를 생략할 수 있습니다)
트리거 레코드:
시스템은 현재 조작할 기록의 현재 상태를old에 저장하고, 조작 후의 가능한 상태는new에 저장합니다
(new는 사건 이후의 새로운 값이고,old는 사건 이전의 낡은 값이다)
(삭제할 때는 new가 없고, 삽입할 때는old가 없다) (삽입하기 전, 삭제한 후에는 아무것도 없기 때문이다)
(referencing으로 new old 개명 가능)
트리거 삭제:
drop trigger on ;
(트리거는 업데이트하거나 덮어쓸 수 없습니다. 트리거를 수정하려면 먼저 삭제하고 다시 만들어야 합니다.)
밤을 들다.
SC 테이블의grade 속성을 수정할 때 점수가 10% 증가하면 이 동작을 SC_에 기록합니다U 테이블
create trigger SC_T
after update of Grade on SC
for each row
when(new.grade >= 1.1* old.grade)
insert into SC_U(Sno,Cno,OldGrade,NewGrade)
values(old.Sno,old.Cno,old.Grade,new.Grade)
이것은 이해하기 쉽다. 조회 조건과 어떤 줄에 대한 업데이트를 이용했다
밤을 하나 더 들다.
교사표 Teacher를 위해 완전성 규칙을 정의합니다. "교수의 임금은 4000위안보다 낮으면 안 되고, 4000위안보다 낮으면 자동으로 4000위안으로 바꿉니다."
create trigger Insert_Or_Update_Sal
before insert or update on Teacher
for each row
begin
if(new.Job=' ')and(new.Sal<4000)
then new.Sal := 400;
end if;
end;
이 예도 이해하기 쉽지만 다양한 조작 정의 트리거, begin...end 문장 그룹, if 문장, 값 부여 문장
그러나 mydql 환경에서 값을 부여하는 문장: = 테스트 시 set new로 변경되지 않았습니다.Job='교수'통과
주의:delimiter는 begin end와 자주 어울립니다. 문장 끝 문자를 바꿔서 begin end 안의 여러 문장이 전체 명령을 끝내지 않고 분호로 끝날 수 있도록 해야 하기 때문입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SQLite의 query로 망설임이것은 내가 처음 안드로이드 응용 프로그램 개발에서 망설이고, 그 후 해결 된 방법을 비망록으로 철자하고 있습니다. java에서 SQLite를 이용한 애플리케이션을 작성하는 동안 EditText에 입력된 item이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.