sql-server - 将已删除的行重新插入到同一个表 SQL Server 2005
问题描述
在搜索了很多页面之后,我仍然找不到关于在同一个表中重新插入已删除行的答案——而不是另一个表。
我有一个名为时间表的表,其主键由 3 列组成Schoolcode, Year, Term
。
由于某种原因,我需要将已删除的行插入到同一个表中。
我得到错误
违反 PRIMARY KEY 约束
使用以下触发器
ALTER TRIGGER [dbo].[AFTER_delete_]
ON [dbo].timetable
AFTER delete
AS
BEGIN
IF EXISTS (SELECT * FROM deleted)
BEGIN
INSERT INTO timetable
SELECT *
FROM deleted A
WHERE NOT EXISTS (SELECT 1 FROM timetable B
WHERE B.Schoolcode = A.Schoolcode
AND B.Year = A.Year
AND B.Term = A.Term);
END
END
解决方案
感谢任何方式。我测试了下面的代码并且确实有效。
ALTER TRIGGER [dbo].[Instead_OfDelSert_Status]
ON [dbo].[Status]
INSTEAD OF delete,insert
AS
BEGIN
PRINT 'You must disable or delete Trigger Instead_OfDelSert_Status to insert or
delete rows!'
END
推荐阅读
- recursion - Oracle/PLSQL 递归
- javascript - 专注于输入字段
- c++ - 使用数据练习:日、月、年
- php - ldap_add():服务器不愿意执行——使用PHP向AD中插入记录
- android - 使用 Kotlin 在 Android 10 上对标记进行聚类
- mysql - 是否可以选择从 Hive 中的哪个数据库中选择
- php - 从 Google Cloud 的免费层升级后,Wordpress 网站停止工作
- python - 根据 2 个(或更多列值)查找下一个相关行
- include - 我正在尝试包括
在我的 Redhat Enterprise linux 服务器上的源代码中,需要安装它 - flutter - Flutter:如何在 Flutter 中向 http 包添加标头