我需要一个动态sql查询,它可以根据任何case / condition获取表的列值。我想在更新任何记录时这样做。我需要更新列的值,因此我使用的是SQL Server的Inserted和Deleted表。
我做了一个查询,它可以正常使用一列,但我需要一个适用于所有列的通用查询。
SELECT i.name
FROM inserted i
INNER JOIN deleted d ON i.id = d.id
WHERE d.name <> i.name
在上述查询的帮助下,如果更新,我们可以获得“名称”列值。但是因为它特定于一列我想要的一个表的所有列,其中不需要定义任何列名称,它应该是通用/动态查询。
我试图通过为列添加一个PIVOT为“INFORMATION_SCHEMA.COLUMNS”的内部联接来实现这一点,但我不确定它是否可以通过它来做到这一点。
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME LIKE '%table1%'
答案 0 :(得分:0)
您只能使用查询来获取此类信息。听起来你需要运行更新触发器。在那里,您可以编写标准来获取您的列等。从您的问题来看,听起来只有一列可以更新,您只是不确定它将是哪一个。如果要更新多个列,那会使事情复杂化,但不会那么多
有几种方法可以获得所需的数据。在顶部之后,我建议在获得列名后进行一些简单的循环。
在类似场景中对我有用的是对INFORMAATION_SCHEMA.Columns进行简单查询,并将结果放在表变量中。从那里,遍历表变量以一次获得一个列名并运行一个简单的动态查询以查看值是否已更改。
希望这有帮助。
:{)