热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

触发此操作以刷新我点击更新的行中的特定列

在数据表中,我需要触发一个操作来刷新特定列的数据。例如,对于以下表格:|ID|Name|IsDeleted||----|-------|-----------||1|test|True||2|test2|False|我希望在点击“更新”按钮时,能够仅刷新选定行的“IsDeleted”列。这将有助于确保数据的实时性和准确性。

所以我有这张桌子:

ID Name IsDeleted
1 test True
2 test2 False

我目前有以下触发器:

CREATE TRIGGER [dbo].[Trigger_test_IsDeleted]
ON [dbo].[test]
INSTEAD OF DELETE
AS
BEGIN
SET NOCOUNT ON;
UPDATE dbo.test
SET IsDeleted = 1
WHERE ID = 1;
END

当我在索引视图中的一行上单击删除按钮时,我需要此触发器启动并将该确切行上的IsDeleted设置为1(或True)。但是,使用上述触发器执行此操作显然只会删除ID = 1的行源。如果我省略WHERE语句,它将所有行的IsDeleted设置为true。

我需要触发器来动态确定按下“删除”的位置,并且只删除该行。

我知道在MySQL中,可以通过在删除触发器中使用以下命令来完成此操作:

SET new.IsDeleted = 1

有没有办法获得与“新”相同的效果。在SQL Server触发器中?

并且由于我们处于主题上,因此我想实现相同的目的,但是要更改控制器中的当前代码。这是现在的样子:

//POST - Delete
[HttpPost,actionName("Delete")]
[ValidateAntiForgeryToken]
public async Task Delete(int? id)
{
var test = await _db.Test.FindAsync(id);
if (test== null)
{
return View();
}
_db.Test.Remove(test);
await _db.SaveChangesAsync();
return RedirectToaction(nameof(Index));
}

此代码将对数据库执行普通的删除操作。我想更改它以将“ IsDeleted”设置为1,而不是删除记录。


如果您要更新标志而不是删除(有些人称其为SOFT DELETE),则应按以下方式更新触发器:

CREATE TRIGGER [dbo].[Trigger_test_IsDeleted]
ON [dbo].[test]
INSTEAD OF DELETE
AS
BEGIN
SET NOCOUNT ON;
UPDATE dbo.test
SET deleted.IsDeleted = 1
WHERE ID = deleted.ID; --<-- This is the key point
END

,

您需要检查“已删除”虚拟表,并相应地执行更新。 EG:

create table test(id int primary key,IsDeleted bit default 0)
go
CREATE OR ALTER TRIGGER [dbo].[Trigger_test_IsDeleted]
ON [dbo].[test]
INSTEAD OF DELETE
AS
BEGIN
SET NOCOUNT ON;
UPDATE dbo.test
SET IsDeleted = 1
WHERE ID in (select id from deleted);
END
go
insert into test(id,IsDeleted) values (1,0),(2,(3,0)
delete from test where id = 2
select * from test

输出

id IsDeleted
----------- ---------
1 0
2 1
3 0
(3 rows affected)

推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 2023 ARM嵌入式系统全国技术巡讲旨在分享ARM公司在半导体知识产权(IP)领域的最新进展。作为全球领先的IP提供商,ARM在嵌入式处理器市场占据主导地位,其产品广泛应用于90%以上的嵌入式设备中。此次巡讲将邀请来自ARM、飞思卡尔以及华清远见教育集团的行业专家,共同探讨当前嵌入式系统的前沿技术和应用。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 本文讨论了如何根据特定条件动态显示或隐藏文件上传控件中的默认文本(如“未选择文件”)。通过结合CSS和JavaScript,可以实现更灵活的用户界面。 ... [详细]
  • andr ... [详细]
  • 本文探讨了在通过 API 端点调用时,使用猫鼬(Mongoose)的 findOne 方法总是返回 null 的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • TCP长连接设备管理平台:架构与功能概览
    本文介绍了基于TCP长连接的设备管理平台的设计理念、技术选型及主要功能模块。最初,项目旨在实现简单的协议测试,但随着需求扩展,逐步演变为一个完整的前后端分离系统。 ... [详细]
  • 深入剖析 DEX 赛道:从 60 大头部项目看五大趋势
    本文通过分析 60 大头部去中心化交易平台(DEX),揭示了当前 DEX 赛道的五大发展趋势,包括市场集中度、跨链协议、AMM+NFT 结合、新公链崛起以及稳定币和衍生品交易的增长潜力。 ... [详细]
author-avatar
吴小彬x
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有