如何使用c#从winforms UI中删除SQL Server中的false记录

本文关键字:Server SQL 中的 false 记录 删除 何使用 winforms UI | 更新日期: 2023-09-27 18:24:04

我在SQL Server中将已删除的记录设置为false时遇到问题。我尝试了很多。

我的问题是,我在一些列中有一个表,id,name等等…id是主要的关键约束。用户何时删除记录?所以记录应该是摆在桌子上。我会在我的桌子上把那张记录当作假的吗?

将来他想添加已删除id的记录吗?我们给机会添加具有该id的记录?

请告诉我这样做的例子?我试了很多,但我不知道。因为主键不接受重复项,所以我在这里搜索。

我的删除存储过程:

如果用户在我的UI中按下删除按钮:

这个存储过程在我的后端执行:

update table set id=id*-1, flag=1 where id=@id and flag=0;

在前面我已经显示记录被删除。

但如果他想添加带有已删除id的记录。主键发音我的数据库出现错误。当他插入记录时。

感谢

如何使用c#从winforms UI中删除SQL Server中的false记录

  1. 将列DeleteFlag bit添加到表中,默认情况下设置为false
  2. 总是添加where条件WHERE DeleteFlag = 0以在UI中显示数据
  3. 如果用户从UI中"删除"记录,则将列更新为true

不要更改主键,它们不打算更改。

编辑

要重用已删除的Id,可以否定Id并将记录标记为已删除。但是,不建议在正常情况下更新主键。

示例

UPDATE id = -1 * id, flag = 1 WHERE id = @id and flag = 0;

编辑2

如果使用删除具有相同已删除id的新记录,则仅否定id是不够的。

UPDATE t SET id = newId.Value, flag = 1, new_field=@id     
FROM table t CROSS APPLY
(
    SELECT CASE WHEN MIN(Id) >= 0 THEN -1 ELSE MIN(Id) - 1 END AS value 
    FROM table with(updlock)
) AS newId
WHERE t.id = @id AND flag = 0