เป็น script ที่ใช้หาว่าตารางของ SQL Server มี PK (Primary Key), FK (Foreign Key), UQ (Unique Constraint) อยู่หรือไม่มีเลย
find_from_table_has_PK_FK_UQ.sql
SELECT
T.TABLE_SCHEMA,
T.TABLE_NAME,
-- ตรวจสอบว่ามี Primary Key หรือไม่
MAX(CASE WHEN C.CONSTRAINT_TYPE = 'PRIMARY KEY' THEN 'YES' ELSE 'NO' END) AS Has_PK,
-- ตรวจสอบว่ามี Foreign Key หรือไม่
MAX(CASE WHEN C.CONSTRAINT_TYPE = 'FOREIGN KEY' THEN 'YES' ELSE 'NO' END) AS Has_FK,
-- ตรวจสอบว่ามี Unique Constraint หรือไม่
MAX(CASE WHEN C.CONSTRAINT_TYPE = 'UNIQUE' THEN 'YES' ELSE 'NO' END) AS Has_UQ,
-- สรุปสถานะรวม
CASE
WHEN COUNT(C.CONSTRAINT_TYPE) = 0 THEN 'NO CONSTRAINTS'
END AS Constraint_Status
FROM
INFORMATION_SCHEMA.TABLES AS T
LEFT JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS C
ON T.TABLE_SCHEMA = C.TABLE_SCHEMA
AND T.TABLE_NAME = C.TABLE_NAME
AND C.CONSTRAINT_TYPE IN ('PRIMARY KEY', 'FOREIGN KEY', 'UNIQUE') -- กรองเฉพาะ 3 ประเภทที่สนใจ
WHERE
T.TABLE_TYPE = 'BASE TABLE' -- กรองเอาเฉพาะตารางจริง ไม่ใช่ Views
GROUP BY
T.TABLE_SCHEMA,
T.TABLE_NAME
ORDER BY
T.TABLE_SCHEMA,
T.TABLE_NAME;
หลังจากรู้ว่าตารางไหนมี PK, FK, UQ แล้วในการทำเอกสารอาจจจะต้องรู้ว่า column อะไร สามารถใช้ SQL Server: หาตารางว่ามี columns อะไรเป็น PK, FK, UQ
About the author