我对“导入”进行了触发。将规范化数据发送到我的主要表格的表格。表。 目前,如果插入两次相同的数据,则触发器将删除主表中找到的数据并重新插入。虽然这已经有一段时间了,但删除可能是好的数据似乎是一个坏主意。
我目前的代码如下:
DELETE FROM [MainTable]
WHERE [DeviceSN] IN (
SELECT DISTINCT [DeviceSN]
FROM [ImportTable]
INNER JOIN [MapTable] ON [ImportTable].[Component] = [MapTable].[Component] and [ImportTable].[Property] = [MapTable].[Property]
WHERE DateAdded < [Created Date] AND [Imported] = 0
)
INSERT INTO [MainTable]
([DeviceSN]
,[Key]
,[Value]
SELECT
[DeviceSN]
,[Key]
,[Value]
FROM [ImportTable]
INNER JOIN [MapTable] ON [ImportTable].[Component] = [MapTable].[Component] and [ImportTable].[Property] = [MapTable].[Property]
WHERE [Imported] = 0;
UPDATE [ImportTable]
SET [Imported] = 1
FROM [ImportTable]
INNER JOIN [MapTable] ON [ImportTable].[Component] = [MapTable].[Component] and [ImportTable].[Property] = [MapTable].[Property]
WHERE [Imported] = 0;
我想知道我是否有办法简单地更新存在主键约束的值,而不是每次都从主表中删除。
另外, 映射表只是为每个串行属性分配一个键值。它基本上是一个帮助规范化数据的字典。 我知道我应该在这些触发器中使用伪表。这是我打算做的事情。