sqlserver 트리거 학습(자동 번호 구현)
CREATE TRIGGER <trigger name>
ON <table or view>
{{{FOR|AFTER} <[INSERT] [,] [UPDATE],[DELETE]>}|INSTEAN OF}
AS
<sql statement>
4.트리거 는 표 나 보기에 추가 해 야 하 며 트리거 는 따로 존재 할 수 없습니다.AFTER 또는 FOR 트리거 는 보기,INSTEAD OF 지원 표 또는 보 기 를 지원 하지 않 습 니 다.5.INSERT 트리거 에서 SQL Server 는 줄 을 삽입 하 는 복사 본 을 만 들 고 이 복사 본 을 특수 표 Insert 표 에 삽입 합 니 다.이 표 는 트리거 역할 영역 에 만 존재 합 니 다.6.DELETE 트리거 에서 SQL Server 는 줄 을 삭제 하 는 복사 본 을 만 들 고 이 복사 본 을 특수 표 Delete 표 에 삽입 합 니 다.이 시 계 는 트리거 역할 영역 에 만 존재 합 니 다.7.UPDATE 트리거 에서 SQL Server 는 업 데 이 트 된 기록 이 기 존의 기록 을 삭제 하고 업 데 이 트 된 신기록 을 삽입 한 것 이 라 고 생각 하기 때문에 UPDATE 트리거 에는 Insert 와 Delete 두 개의 특수 표 가 포함 되 어 있 고 트리거 역할 영역 만 존재 하 며 이 두 표 의 줄 수 는 완전히 같다.8.트리거 는 가능 한 한 짧 습 니 다.트리거 와 트리거 안의 문 구 는 함께 처리 되 기 때 문 입 니 다.즉,문장 이 실 행 될 때 까지 트리거 가 완 성 된 것 입 니 다.코드 가 길 면 트리거 가 오래 걸 릴 겁 니 다.다음은 자동 번호 기능 을 실현 하 는 예 입 니 다.
-- , , : , 1
-- PJ+"-"+" "+"-"+" "+"-"+" "
-- :PJ-ABCD-120805-0001
create table testAccount --
(
tAccName nvarchar(100), --
tAccId nvarchar(32) --
)
create table testProject --
(
tProName nvarchar(100), --
tProId nvarchar(32), --
tIdAcc nvarchar(100), --
tProGuid nvarchar(64) --guid
)
go
create trigger T_AutoNumber
on testProject
after insert
as
begin
declare @one nvarchar(8), -- ,PJ
@two nvarchar(32), -- ,
@three nvarchar(8), -- ,
@four int, -- ,
@guid nvarchar(64) --guid
set @one='PJ'
set @three= convert( varchar(8),GETDATE(),112)
-- Inserted guid
select @two=tIdAcc,@guid=tProGuid from Inserted
--
select @four=max(cast(right(tProId,4)as int))
from testProject
where tIdAcc=@two
-- 1 , 1
if @four is null
set @four=0
else
set @four=cast(@four as int)
set @four=@four+1
update testProject set tProId=@one+'-'+@two+'-'+@three+'-'+right('0000'+cast(@four as varchar),4) where tProGuid=@guid
end
go
--
insert into testAccount values (' ','XXYGS')
insert into testAccount values (' ','CXY')
insert into testProject (tProName,tIdAcc,tProGuid)values (' ','XXYGS',newid())
insert into testProject (tProName,tIdAcc,tProGuid)values (' ','XXYGS',newid())
insert into testProject (tProName,tIdAcc,tProGuid)values (' ','CXY',newid())
select * from testProject
drop table testAccount
drop table testProject
9.디 버 깅 트리거:새 검색 창 에 코드 를 입력 하고 F11 을 누 르 면 다음 스 크 립 트 를 한 문장 씩 실행 하여 트리거 에 들 어 갈 수 있 습 니 다.트리거 에 정지점 을 설정 하고 F11 구문 을 누 르 면 실 행 됩 니 다.
begin tran
insert into testProject (tProName,tIdAcc,tProGuid)values (' ','XXYGS',newid())
insert into testProject (tProName,tIdAcc,tProGuid)values (' ','XXYGS',newid())
insert into testProject (tProName,tIdAcc,tProGuid)values (' ','CXY',newid())
if @@TRANCOUNT>0
rollback tran
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
우분투에 SQL 서버 설치Microsoft SQL Server는 오늘날 업계에서 가장 눈에 띄는 데이터베이스 중 하나입니다. 이번 포스팅에서는 우분투에 설치하는 방법을 알려드리겠습니다. sudo 권한이 있는 계정 1단계: 터미널 열기 단축키...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.