2017-04-26 5 views
-1

TID 열의 테이블 작업에 "ADDDMMYYYYxxxx"형식으로 삽입하려고 시도한 코드는 다음과 같습니다. 출력 값이 NULL입니다.특정 형식으로 삽입 자동 증가 열의 SQL 트리거를 만듭니다.

create table Task 
(
    TID nvarchar(50) default 'QA201712120000' 
); 
go 


create trigger insertTask 
on Task 
after insert as 
begin 
    update Task set TID= 
    'QA' + REPLACE(CONVERT(CHAR(10), GETDATE(), 103), '/', '') + 
    RIGHT('000' + CAST(SCOPE_IDENTITY() AS VARCHAR(4)) , 4) 
end 


insert into Task default values; 
+1

에 오신 것을 환영합니다. Mr Mr @ Maher. SQL 코드에 문제가있어 텍스트를 사용하여 설명 할 수 있습니다. 제목만으로는 설명이 충분하지 않습니다. – miltonb

+0

TID 컬럼의 테이블에 태스크 "ADDDMMYYYYxxxx" –

+2

에 삽입하고 싶습니다. 트리거는 ** 벤더에 따라 다르므로 ** - mysql, postgresql, sql-server', oracle' 또는'db2' - 또는 완전히 다른 것입니다. –

답변

0

아래 예제 코드를 사용해보십시오. 이 솔루션의

create table Task 
(
    ID int not null identity (1,1) primary key, 
    TID nvarchar(50) default 'QA201712120000' 
); 
go 

create trigger insertTask 
on Task 
after insert as 
begin 
    update Task 
    set TID = 'QA' + REPLACE(CONVERT(CHAR(10), GETDATE(), 103), '/', '') 
        + RIGHT('000' + CAST(inserted.ID AS VARCHAR(4)), 4) 
    from Task 
    join inserted on inserted.ID = Task.ID; 
end; 
go 

insert into Task default values; 
insert into Task default values; 
insert into Task default values; 

select * from Task; 

특징 :

  • 만 새로 삽입 된 기록 갱신 - 전체 테이블
  • 는 당 기록으로 올바른 ID 값을 적용 업데이트 앞의 예 - 이전 예제는 SCOPE_IDENTITY()에서 파생 된 전역 값을 사용했습니다.