[英]How to make deleted record as false on the table in SQL Server using c#?
[英]How to deleted record as false in SQL Server from winforms UI using c#?
我在 SQL Server 中将删除的记录设置为 false 时遇到问题。我尝试了很多。
我的问题是我在某些列 id、name 等...id 中有一个表作为主键约束。 用户何时删除记录? 这样记录应该出现在桌子上。 我会在我的表中将该记录设为假吗?
将来他想添加带有已删除 id 的记录? 我们有机会添加具有该 ID 的记录吗?
请告诉我这样做的例子? 我尝试了很多,但我不知道。 因为主键不接受重复项,所以我在这里敲了敲。
我的删除存储过程:
如果用户在我的 UI 中按下删除按钮:
这个存储过程在我的后端执行:
update table set id=id*-1, flag=1 where id=@id and flag=0;
在前面我已经显示记录被删除。
但是,如果他想添加具有该已删除 id 的记录。 我的数据库中的主键失效错误。当他插入记录时。
谢谢
DeleteFlag bit
,默认设置为false。WHERE DeleteFlag = 0
以在 UI 中显示数据不要改变主键,它们不打算改变。
编辑
要重用已删除的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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.