gpt4 book ai didi

sql-server - SQL Server 在 INSERT 和 Update 上创建触发器

转载 作者:行者123 更新时间:2023-12-02 22:52:05 30 4
gpt4 key购买 nike

我在 SQL Server 2008 R2 中创建了一个包含以下列的表:ObservationId、FirstCreatedDate、description、……和 LastUpdatedDate。 ObservationId 是一个递增 1 的标识。

我需要创建两个触发器,一个用于 INSERT,另一个用于 UPDATE。插入新记录时,INSERT 触发器将通过获取当前日期时间来更新 FirstCreatedDate 列;当更新现有记录时,UPDATE 触发器将通过获取当前日期时间来更新 LastUpdatedDate 列。

我未能做到这一点,因为我猜测身份可能是问题所在。

有人可以帮我吗?谢谢!

干杯,亚历克斯

ALTER TRIGGER [dbo].[T_InsertNewObservation] ON [dbo].[GCUR_OBSERVATION] 
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for trigger here
UPDATE GCUR_OBSERVATION SET GCUR_OBSERVATION.FirstCreatedDate = getdate()
FROM GCUR_OBSERVATION a INNER JOIN INSERTED ins ON a.ObservationId = ins.ObservationId

END

最佳答案

我认为您基本上是正确的,但没有正确访问 INSERTED 或 DELETED 表。

ALTER TRIGGER [dbo].[T_InsertNewObservation] ON [dbo].[GCUR_OBSERVATION] 
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- get the last id value of the record inserted or updated
DECLARE @id INT
SELECT @id = [ObservationId]
FROM INSERTED

-- Insert statements for trigger here
UPDATE GCUR_OBSERVATION
SET GCUR_OBSERVATION.FirstCreatedDate = GETDATE()
WHERE [ObservationId] = @id

END
PS。希望这能像我在记事本中编写的那样有效,但尚未测试过。

关于sql-server - SQL Server 在 INSERT 和 Update 上创建触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11131540/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com