2017-04-26 28 views
-1

以下是我嘗試以此格式「ADDDMMYYYYxxxx」在TID列中插入任務表中的代碼。輸出值爲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

歡迎來到SO Mr @Maher。你的sql代碼有問題,你可以用文本描述。單單標題還不足以說明。 – miltonb

+0

我想以這種格式在「TDM」列中插入任務表格「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()派生的全局值()