>php教程 >PHP开发 >SQL 트리거(삽입, 업데이트, 삭제)

SQL 트리거(삽입, 업데이트, 삭제)

高洛峰
高洛峰원래의
2016-12-14 16:19:081469검색

--삽입 트리거
트리거 생성 tri_insert
학생 — 변경할 테이블의 이름
삽입 — 데이터 조각을

테이블에 삽입할 때 트리거됨 @student_id char(10) --변수 정의
SELECT @student_id=s.student_id from --쿼리된 지정된 필드의 값을 변수에 할당합니다.
student s 내부 조인이 i
에 삽입되었습니다. .student_id=i.student_id
if @student_id='0000000001'
begin
Raiserror('학생번호 1을 삽입할 수 없습니다!',16,8)
트랜 롤백
end
go

--업데이트 트리거
트리거 생성 tri_update
학생--변경할 테이블의 이름
업데이트--데이터 조각이 table
as
if update(student_id)
begin
Raiserror('학생 ID를 수정할 수 없습니다!',16,8)
롤백 tran
end
go


--삭제 트리거
트리거 생성 tri_delete
학생 --변경할 테이블 이름
삭제용 --테이블에서 데이터를 삭제할 때 트리거
as
@student_id varchar(10) 선언
삭제된 항목에서 @student_id=student_id 선택
if @student_id='admin'
begin
Raiserror('error',16,8)
롤백 전환
end

설명: 데이터를 삭제할 때 데이터베이스가 삭제된 데이터를 삭제된 임시 테이블에 넣을 것이라고 가정할 수 있습니다. 삭제된 필드를 삽입할 때 삽입된 테이블에 삽입할 데이터를 넣는다는 점만 제외하고 원칙은 동일합니다.
업데이트 작업은 두 가지 작업을 수행하는 것으로 볼 수 있습니다. 먼저 행 레코드를 삭제한 다음 삽입하는 방식으로 업데이트 작업은 실제로 삭제된 테이블과 삽입된 테이블에 대해 수행되므로 업데이트된 테이블이 발생하지 않습니다. 두 테이블에 기본키와 외래키 관계가 있을 때, 메인 테이블의 데이터를 삭제하고 싶다면, 서브 테이블과 관련된 데이터도 함께 삭제하게 되는데, 이때 트리거를 사용하면, 테이블을 삭제한 후에 트리거가 트리거되므로 아무런 효과가 없습니다. 예, 이 시점에서 "기본 및 외래 키 관계가 있으므로 삭제할 수 없습니다."라는 메시지가 표시되면서 바로 종료됩니다. 효과가 없습니다


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.