2016-07-13 17 views
0

私は、テーブルの列がIDでREFERENCE_ID.IDがPキーで、autoincrementがその上に設定されているとします。挿入後、REFERENCE_IDを更新するために日付と共に挿入されたID。挿入トリガーがms sqlで機能しない2014

GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER TRIGGER [dbo].[ReferenceIDTrigger] 
    ON [dbo].[TABLE1] AFTER INSERT 
AS 
BEGIN 

    update TABLE1 set REFERENCE_ID = CONVERT([varchar](2) , DATEPART(MONTH,GETDATE()))+ SUBSTRING(CONVERT([varchar](4) , DATEPART(YEAR,GETDATE())),3,4)+ CAST(ID AS VARCHAR(50)) WHERE ID=(SELECT MAX(ID) FROM TABLE1) 

END 

これは、Javaを通じて挿入したときに、手動でSQL designer.Howeverてレコードを挿入するとき、それはPKEYは、テーブル・エラーが見つかりされていないと言い正常に動作します。

PS:これは最近、2010年から2012年のsqlに移行されています。これは、java.awの挿入が間違っている場合でも2010年に正常に動作します。

ありがとうございます。私はあなたがこれを試すべきだと思い

+0

「INSERT」を作成するために使用する関連Javaコードを含めることはできますか? –

+0

私は@ TimBiegeleisenに同意します。デザイナーで動作する場合、デバッグに役立つJAVA経由の実際の呼び出しを確認する必要があります。私/私たちはデータの心配を提案します。 – SQLMason

+0

また、ここで 'max(id)'を実行するかどうかわかりませんが、 'ID' [Of Interest](https://social.msdn)で' INSERTED'テーブルに参加したいかもしれません。 microsoft.com/Forums/sqlserver/en-US/d246ecea-8d80-47f4-a955-472eae9ac36b/trigger-get-values-from-updated?forum=transactsql) – SQLMason

答えて

0

ALTER TRIGGER [DBO]。[ReferenceIDTrigger] [DBO] ON

。[TABLE1]

INSERT

FOR

AS

を宣言する@id int

を選択します。@id = Id from Inserted

開始

更新T1 セットREFERENCE_ID = CONVERT(VARCHAR、DATEPART(MONTH、GETDATE()))+ SUBSTRING(CONVERT(VARCHAR、DATEPART(YEAR、GETDATE()))、3,4)+ CAST(i.ID AS VARCHAR(50))

where id [email protected] 

END;

関連する問題