gpt4 book ai didi

sql - 如何将行更新时间和行更新用户添加到表中?

转载 作者:行者123 更新时间:2023-12-04 14:34:36 25 4
gpt4 key购买 nike

我有一个包含创建日期和创建用户字段的表,该表似乎有效。

但是我在创建一个正常运行的行更新日期时间和按字段更新的行时遇到了困难。

我希望这些字段如何工作:当有人更新表中的记录时,记录正在更新的记录的日期/时间和用户名。

这是我失败的触发器创建语法,我错误地改编自 Stack Overflow 上的答案:

我应该指出,在这么多其他示例中,我不明白“插入”表格的来源。也不知道为什么它和内部联接有效。

CREATE TRIGGER mkt.Update_tbl_fTesting
ON mkt.tbl_fTesting
FOR UPDATE
AS

BEGIN
SET NOCOUNT ON;

UPDATE mkt.tbl_fTesting
SET RowUpdateDateTime = GetDate()
, RowUpdateBy = coalesce(SUSER_SNAME(), '?')
FROM mkt.tbl_fTesting
INNER JOIN inserted
ON tbl_fTesting.tbl_fTestingIdentity = inserted.ID;
END
GO

执行触发器创建语法的错误是:

Invalid Column Name 'ID'

这是我按预期工作的表创建语法:

USE [ObscuredDatabase]
GO

DROP TABLE [mkt].[tbl_fTesting]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [mkt].[tbl_fTesting](
[tbl_TestingIdentity] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[Produce] [nvarchar] (25) NOT NULL,
[Color] [nvarchar] (25) NOT NULL,
[RowCreateDateTime] [datetime] NULL DEFAULT (getdate()),
[RowCreateBy] [nvarchar](max) NULL DEFAULT (coalesce(suser_sname(),'?')),
[RowUpdateDateTime] [datetime] NULL,
[RowUpdateBy] [nvarchar](max) NULL
PRIMARY KEY CLUSTERED
(
[tbl_fTestingIdentity] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [SECONDARY]
) ON [SECONDARY]

GO

最佳答案

好吧,你的表的主键不叫ID,叫tbl_TestingIdentity 所以在插入时你需要使用这个列名。 (inserted.tbl_TestingIdentity)

关于sql - 如何将行更新时间和行更新用户添加到表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43879591/

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