คุณสามารถใช้ Query ตรวจสอบ Default Constraints ที่ “ไม่ได้ถูกตั้งชื่อโดยระบบ SSMS” (SSMS-generated) เพราะโดยปกติแล้ว ถ้า SSMS สร้าง Default Constraint ให้เอง (เช่น สร้างผ่าน Table Designer) ชื่อของมันจะมี Suffix เป็นแฮชแบบสุ่ม และในตาราง sys.default_constraints จะมี Flag is_system_named เป็น 1 (True) ดังนั้น Query ที่จะหาชื่อที่คุณ “สร้างเอง” หรือ “ตั้งชื่อผิด” (คือไม่ได้ให้ระบบตั้ง) จะใช้การค้นหาis_system_named = 1 คือ Constraint ที่ถูกตั้งชื่อโดยระบบ (System-named)is_system_named = 0 คือ Constraint ที่ถูกตั้งชื่อโดยผู้ใช้ (User-named) ซึ่งหมายความว่า “ไม่เป็นไปตาม” มาตรฐานที่ SSMS หรือระบบสร้างให้
find_index_constraint_by_my_name.sql
/*
-- 1. Primary Keys & Unique Constraints
*/
SELECT
s.name AS SchemaName,
t.name AS TableName,
kc.name AS ObjectName,
kc.type_desc AS ObjectType, -- 'PRIMARY_KEY_CONSTRAINT' or 'UNIQUE_CONSTRAINT'
NULL AS RelatedColumn,
NULL AS Definition
FROM
sys.key_constraints AS kc
INNER JOIN
sys.tables AS t ON kc.parent_object_id = t.object_id
INNER JOIN
sys.schemas AS s ON t.schema_id = s.schema_id
WHERE
kc.is_system_named = 0
UNION ALL
/*
-- 2. Foreign Keys
*/
SELECT
s.name AS SchemaName,
t.name AS TableName,
fk.name AS ObjectName,
'FOREIGN_KEY_CONSTRAINT' AS ObjectType,
NULL AS RelatedColumn, -- FKs can span multiple columns
NULL AS Definition
FROM
sys.foreign_keys AS fk
INNER JOIN
sys.tables AS t ON fk.parent_object_id = t.object_id
INNER JOIN
sys.schemas AS s ON t.schema_id = s.schema_id
WHERE
fk.is_system_named = 0
UNION ALL
/*
-- 3. Check Constraints
*/
SELECT
s.name AS SchemaName,
t.name AS TableName,
cc.name AS ObjectName,
'CHECK_CONSTRAINT' AS ObjectType,
c.name AS RelatedColumn, -- Column name if it's a column-level check
cc.definition AS Definition
FROM
sys.check_constraints AS cc
INNER JOIN
sys.tables AS t ON cc.parent_object_id = t.object_id
INNER JOIN
sys.schemas AS s ON t.schema_id = s.schema_id
LEFT JOIN
sys.columns AS c ON cc.parent_object_id = c.object_id AND cc.parent_column_id = c.column_id
WHERE
cc.is_system_named = 0
UNION ALL
/*
-- 4. Default Constraints (From your original query)
*/
SELECT
s.name AS SchemaName,
t.name AS TableName,
dc.name AS ObjectName,
'DEFAULT_CONSTRAINT' AS ObjectType,
c.name AS RelatedColumn,
dc.definition AS Definition
FROM
sys.default_constraints AS dc
INNER JOIN
sys.tables AS t ON dc.parent_object_id = t.object_id
INNER JOIN
sys.schemas AS s ON t.schema_id = s.schema_id
INNER JOIN
sys.columns AS c ON dc.parent_object_id = c.object_id AND dc.parent_column_id = c.column_id
WHERE
dc.is_system_named = 0
ORDER BY
SchemaName, TableName, ObjectType, ObjectName;