【问题标题】:I want to update the table column via trigger to be the same update in another table我想通过触发器将表列更新为另一个表中的相同更新
【发布时间】:2017-02-20 05:23:23
【问题描述】:

我正在 SQL Server 2005 中创建一个触发器,我需要一些帮助。我在 SQL Server 2005 中有一个数据库 (ZKAccess)。

这些数据库有不同的表名。

我希望表PersonalInfo(列:Reg、Name、Rank、Address)用户数据更新到表USERINFO(列:名称、姓氏、地址、城市)中相同。

如何创建触发器,以便每次在数据库中插入/更新/删除时也会自动更新。

这可能吗?可以举一些例子吗?

【问题讨论】:

    标签: c# sql-server


    【解决方案1】:

    作为一个简单的示例,这会将您的更新从 PersonalInfo 同步到 USERINFO(我不确定您希望它以哪种方式工作,所以我选择了一种):

    CREATE TRIGGER [TR_PersonalInfo_SyncUpdateFields]  
    ON [PersonalInfo] 
    FOR UPDATE 
    AS
        UPDATE [USERINFO] 
        SET [Name] = inserted.[NAME], 
            [Lastname] = inserted.[Lastname], 
            [Address] = inserted.[Address], 
            [City] = inserted.[City]
        FROM 
            [USERINFO] 
        INNER JOIN 
            inserted ON [USERINFO].[KeyToPersonalInfoField] = inserted.[KeyToPersonalInfoField]
    

    插入将是相似的。对于删除,我建议将外键与级联删除一起使用,但您当然也可以使用触发器。

    【讨论】:

    • Msg 468,级别 16,状态 9,过程 TR_PersonalInfo_SyncUpdateFields,第 5 行无法解决等于操作中“SQL_Latin1_General_CP1_CI_AS”和“Chinese_PRC_CI_AS”之间的排序规则冲突。我收到了这种类型的错误
    • 此问题已通过此查询 COLLATE DATABASE_DEFAULT 解决。
    • USERINFO 表已为空 我想将特定信息从 PERSONAINFO 移动到 USERINFO 特定字段
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2021-08-05
    • 2018-01-12
    相关资源
    最近更新 更多