ป้ายกำกับ: ตาราง

SQL Server: หาตารางว่ามี columns อะไรเป็น PK, FK, UQSQL Server: หาตารางว่ามี columns อะไรเป็น PK, FK, UQ

ตัวนี้จะต่างจาก SQL Server: หาตารางว่ามี PK, FK, UQ ตรงที่จะบอกว่าตารางนั้น ๆ มี column อะไรบ้างที่ทำหน้าที่ PK (Primary Key) , FK (Foreign Key) , UQ (Unique Constraint) และชื่อ columns อะไรบ้าง
find_from_table_has_PK_FK_UQ_columns.sql

SELECT T.TABLE_SCHEMA, T.TABLE_NAME, T.CONSTRAINT_NAME, T.CONSTRAINT_TYPE, -- ใช้ STRING_AGG เพื่อรวมชื่อคอลัมน์ทั้งหมดเข้าด้วยกัน STRING_AGG (C.COLUMN_NAME, ', ') WITHIN GROUP (ORDER BY C.COLUMN_NAME) AS Constraint_Columns
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS T
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS C ON T.CONSTRAINT_NAME = C.CONSTRAINT_NAME AND T.TABLE_SCHEMA = C.TABLE_SCHEMA AND T.TABLE_NAME = C.TABLE_NAME
WHERE T.CONSTRAINT_TYPE IN ('PRIMARY KEY', 'FOREIGN KEY', 'UNIQUE') GROUP BY T.TABLE_SCHEMA, T.TABLE_NAME, T.CONSTRAINT_NAME, T.CONSTRAINT_TYPE
ORDER BY T.TABLE_SCHEMA, T.TABLE_NAME, -- จัดเรียงตามประเภทคอนสเตรนท์: 1=PK, 2=UQ, 3=FK CASE T.CONSTRAINT_TYPE WHEN 'PRIMARY KEY' THEN 1 WHEN 'UNIQUE' THEN 2 WHEN 'FOREIGN KEY' THEN 3 ELSE 4 -- เผื่อไว้สำหรับประเภทอื่น ๆ หากมีการเพิ่มใน WHERE clause END, T.CONSTRAINT_NAME;

อ่านเพิ่มเติม