Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

สร้างตาราง MySQL ตั้งค่าวันที่ปัจจุบันเป็นค่าเริ่มต้น (DEFAULT)

ไวยากรณ์สร้างตารางพร้อม DEFAULT

CREATE TABLE yourTable (
    column1 DATATYPE NOT NULL,
    column2 DATATYPE DEFAULT default_value,
    ...
);

ตัวอย่าง: ตั้งค่าวันที่เข้าทำงานเป็นวันปัจจุบันอัตโนมัติ

CREATE TABLE demo43 (
    employee_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    employee_name VARCHAR(40) NOT NULL,
    employee_status VARCHAR(60) DEFAULT 'NOT JOINED',
    employee_joining_date DATE DEFAULT (CURRENT_DATE)
);

เพิ่มข้อมูลทดสอบ

INSERT INTO demo43 (employee_name, employee_status, employee_joining_date)
VALUES ('John', 'JOINED', '2020-05-10');

INSERT INTO demo43 (employee_name, employee_status, employee_joining_date)
VALUES ('David', 'JOINED', '2020-10-12');

-- ไม่ระบุ joining_date → จะใช้ CURRENT_DATE อัตโนมัติ
INSERT INTO demo43 (employee_name) VALUES ('Bob');

ผลลัพธ์ (สมมติวันนี้คือ 2020-10-31)

+-------------+---------------+-----------------+-----------------------+
| employee_id | employee_name | employee_status | employee_joining_date |
+-------------+---------------+-----------------+-----------------------+
| 1           | John          | JOINED          | 2020-05-10            |
| 2           | David         | JOINED          | 2020-10-12            |
| 3           | Bob           | NOT JOINED      | 2020-10-31            |
+-------------+---------------+-----------------+-----------------------+

รายละเอียดสำคัญ

คอลัมน์DEFAULTหมายเหตุ
employee_status'NOT JOINED'ค่าคงที่สตริง
employee_joining_date(CURRENT_DATE)ฟังก์ชัน — ต้องอยู่ในวงเล็บ

ฟังก์ชันวันที่/เวลาที่ใช้เป็น DEFAULT ได้ (MySQL 8.0+)

  • CURRENT_DATE — วันที่ปัจจุบัน (YYYY-MM-DD)
  • CURRENT_TIME — เวลาปัจจุบัน (HH:MM:SS)
  • CURRENT_TIMESTAMP / NOW() — วันที่และเวลาปัจจุบัน
  • UTC_DATE(), UTC_TIME(), UTC_TIMESTAMP() — เวลา UTC

กรณีพิเศษ: TIMESTAMP และ DATETIME

CREATE TABLE demo_ts (
    id INT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
  • created_at: ตั้งค่าตอน INSERT ครั้งแรก
  • updated_at: อัปเดตอัตโนมัติทุกครั้งที่ UPDATE แถวนั้น

ข้อจำกัด

  • MySQL ก่อน 8.0.13: ไม่รองรับฟังก์ชันใน DEFAULT ของ DATE (ต้องใช้ TIMESTAMP/DATETIME)
  • DEFAULT ไม่สามารถอ้างอิงคอลัมน์อื่นในแถวเดียวกันได้