Tag Archive Index

Byphunsanit

SQL Server: ตาราง (หรือ xxx ) นี่ถูกสร้าง ถูกแก้เมื่อไหร่นะ

ถ้าต้องการตรวจสอบว่าตารางใน SQL Server ถูกแก้ไขโครงสร้าง (Schema Modified) ครั้งล่าสุดเมื่อไหร่ (ALTER TABLE, Constraints, Index, Rename) คุณสามารถใช้ System Catalog Views เพื่อดึงข้อมูลนี้ออกมาได้ โดยใช้ query ง่าย ๆ
find_schema_modified.sql

SELECT
	name AS TableName
	,create_date AS CreatedDate
	,modify_date AS LastModifiedDate
FROM
	sys.objects
WHERE
	TYPE = 'U' -- 'U' คือ User Table
	AND name LIKE 'pp_%'
ORDER BY
	modify_date DESC;

สิ่งที่ทำให้ modify_date เปลี่ยน (Update)

  • ALTER TABLE: เช่น การเพิ่มคอลัมน์ใหม่ (ADD), ลบคอลัมน์ (DROP), หรือเปลี่ยนชนิดข้อมูล (ALTER COLUMN)
  • Constraints: การเพิ่มหรือลบ Primary Key, Foreign Key หรือ Check Constraints
  • Index: ในบางกรณีการสร้างหรือลบ Index ที่ผูกกับตารางนั้นๆ อาจส่งผลให้วันที่ขยับได้
  • Rename: การเปลี่ยนชื่อตารางโดยใช้ sp_rename

สิ่งที่ “ไม่” ทำให้ modify_date เปลี่ยน

  • การเพิ่มข้อมูล (INSERT)
  • การแก้ไขข้อมูล (UPDATE)
  • การลบข้อมูล (DELETE หรือ TRUNCATE)
  • การอ่านข้อมูล (SELECT)

ข้อควรระวัง (Caveats)

  • Index Rebuild: การทำดัชนีใหม่ (Index Rebuild/Reorganize) โดยปกติ จะไม่ ทำให้ modify_date ของตารางเปลี่ยน
  • Views/Procedures: หากตารางมี View มาอ้างอิง แล้วคุณไปแก้ View วันที่ของตารางหลักก็จะไม่เปลี่ยนเช่นกัน (เพราะโครงสร้างตารางหลักยังเหมือนเดิม)
  • Database Restore: หากมีการ Restore database มาจากที่อื่น วันที่เหล่านี้จะเป็นวันที่ดั้งเดิมจากเครื่องต้นทาง

สรุปสั้นๆ: ถ้าคุณเห็น modify_date เปลี่ยน แสดงว่ามีคนไปยุ่งกับ “แบบแปลน” (Schema) ของตาราง ไม่ใช่ “ตัวบ้าน” (Data) ครับ


นอกจากนี้ เรายังสามารถใช้ sys.objects ในการค้นหาการเปลี่ยนแปลงของ Primary key constraint, Synonym, Sequence object, SQL table-valued-function (TVF), unique constraint, View, X = Extended stored procedure ได้อีกด้วย โดยการเปลี่ยน TYPE =

กลุ่มตารางและวิว (Tables & Views)

TypeType Descriptionคำอธิบาย
UUSER_TABLEตารางที่ผู้ใช้สร้างขึ้นเอง
VVIEWวิว (Virtual Table)
SSYSTEM_TABLEตารางของระบบ
ITINTERNAL_TABLEตารางภายในที่ SQL Server ใช้ (เช่น Service Broker)

กลุ่มโปรแกรมมิ่ง (Programmability)

TypeType Descriptionคำอธิบาย
PSQL_STORED_PROCEDUREStored Procedure ที่เขียนด้วย SQL
FNSQL_SCALAR_FUNCTIONFunction ที่คืนค่าเดียว (Scalar)
TFSQL_TABLE_VALUED_FUNCTIONFunction ที่คืนค่าเป็นตาราง (Table)
IFSQL_INLINE_TABLE_VALUED_FUNCTIONInline Table-valued Function
TRSQL_TRIGGERDML Trigger (ตัวดักจับการ Insert/Update/Delete)
PCCLR_STORED_PROCEDUREStored Procedure ที่เขียนด้วย .NET (CLR)

กลุ่มข้อกำหนดและคีย์ (Constraints & Keys)

TypeType Descriptionคำอธิบาย
PKPRIMARY_KEY_CONSTRAINTคีย์หลัก (Primary Key)
FFOREIGN_KEY_CONSTRAINTคีย์นอก (ความสัมพันธ์ระหว่างตาราง)
UQUNIQUE_CONSTRAINTข้อกำหนดห้ามข้อมูลซ้ำ
DDEFAULT_CONSTRAINTค่าเริ่มต้นของคอลัมน์
CCHECK_CONSTRAINTข้อกำหนดตรวจสอบเงื่อนไขข้อมูล

กลุ่มอื่นๆ (Miscellaneous)

TypeType Descriptionคำอธิบาย
SQSERVICE_QUEUEคิวสำหรับ Service Broker
SNSYNONYMชื่อพ้องสำหรับอ้างอิง Object อื่น
AFAGGREGATE_FUNCTIONฟังก์ชันการรวมกลุ่ม (CLR)

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