检测重复记录并用新记录ID标记旧记录

时间:2019-01-29 13:53:07

标签: sql sql-server

我对新要求一无所知。老实说,我还没有编码,所以我想请您仅提供逻辑上的帮助。

我有一个用于报告的大表,其中包含来自工人的数据以及他们工作的最长时间(因此我们可以有很多ID01 John Doe Working From X to Y in Z),该表会由谁知道谁但没有谁不断更新一个人检查更新的数据(因为有时John Doe实际上是从X1 to Y2而不是X to Y开始工作的),因此要求它检测此表上的重复项。到目前为止,我还没有发现任何重复的东西,但我必须比这个家伙领先一步。好的,插入后您可能会说要触发,而我做到了!向老板提出解决方案时,他立即不喜欢它,因为他(当前)想在当前表上使用存储过程,因此我们可以研究插入与旧记录匹配的情况,因此我需要对他进行处理我想。

无论如何,这里是触发器,如果​​输入了重复的行,它将在VALIDO上将旧值更改为0,这是我创建的以对新插入执行类似操作的列(它下面的触发器无法正常工作):

AS
IF EXISTS(
  SELECT 1
  FROM tstSolap t 
  INNER JOIN INSERTED i 
    ON t.ID_HR = i.ID_HR AND t.PERPRO = i.PERPRO
)
BEGIN
    PRINT 'duplicado'
    UPDATE tstSolap SET valido = 0
END
ELSE
BEGIN
    UPDATE tstSolap SET valido = 1
END

然后我的问题是,如何根据多个条件检测逻辑上重复的行并使用新ID设置一个特殊列? (因此更容易手动检测)

0 个答案:

没有答案