我有一个包含400多个表的数据库。每个表都有一个名为ID的键ID字段,但它们都以“ Id”结尾。例如(非代码):
Table 1 ID field = SurveyId
Table 2 ID field = TaskId
Table 3 ID Field = IWantAPeanutButterSandwichId
但是,它们不是表中唯一包含“ Id”的字段,因此我首先想到的是将“ Where name like'%Id'”合并进来。有没有一种方法可以通过sql查询来标识哪个字段是关键字段,并且不必将每个字段都单独遍历就可以将它们全部更改为“ Id”(在一个脚本中)?
您可以使用SQL Server元数据视图(information_schema.table_constraints
和information_schema.constraint_column_usage
)来标识表的键列:
select
tc.table_schema,
tc.table_name,
ccu.column_name
from
information_schema.table_constraints as tc
join
information_schema.constraint_column_usage as ccu
on tc.constraint_name = ccu.constraint_name
where
tc.constraint_type = 'Primary Key'