插入触发器在ms sql 2014中不起作用

时间:2016-07-13 01:32:49

标签: java sql-server tsql

我有一个表说列是ID,REFERENCE_ID.ID是Pkey,并且设置了自动增量。插入后,下面的触发器用于更新REFERENCE_ID,它基本上附加了插入的ID和日期。

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

当通过sql designer手动插入记录时,这很正常。但是当通过java插入时,表示找不到表错误的pkey。

PS:这是最近从2010年迁移到2012年的sql,它在2010年工作正常,即使是通过java插入。可能是错误的。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为你应该试试这个,

ALTER TRIGGER [dbo]。[ReferenceIDTrigger]

ON [dbo]。[TABLE1]

FOR INSERT

AS

声明@id int

从已插入

中选择@id = Id

BEGIN

更新t1         设置REFERENCE_ID = CONVERT(varchar,DATEPART(MONTH,GETDATE()))+ SUBSTRING(CONVERT(varchar,DATEPART(YEAR,GETDATE())),3,4)+ CAST(i.ID AS VARCHAR(50))< / p>

mysite.com

END;