2017-04-26 3 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

ようこそSO 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()から導出されたグローバル値を使用しました。
関連する問題