我必须获取所有唯一键约束的列表以及特定数据库的索引。我正在做这样的事情:
SELECT * FROM sys.sysobjects WHERE type!='u' AND name LIKE <tablename>
只是想确认这是否是正确的方法,或者是否有更好的方法来做同样的事情?
由于唯一约束是作为索引在幕后实现的,因此您可以直接从 sys.indexes 获取所有这些信息:
SELECT
[schema] = OBJECT_SCHEMA_NAME([object_id]),
[table] = OBJECT_NAME([object_id]),
[index] = name,
is_unique_constraint,
is_unique,
is_primary_key
FROM sys.indexes
-- WHERE [object_id] = OBJECT_ID('dbo.tablename');
对所有数据库重复(并且可能没有特定表的过滤器):
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += 'SELECT db = ' + name + ',
[schema] = OBJECT_SCHEMA_NAME([object_id]),
[table] = OBJECT_NAME([object_id]),
[index] = name,
is_unique_constraint,
is_unique,
is_primary_key
FROM ' + QUOTENAME(name) + '.sys.indexes;'
FROM sys.databases
WHERE database_id BETWEEN 4 AND 32766;
EXEC sp_executesql @sql;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)