在數據庫設計中,有時需要固定一些字段,這些字段在表結構中不允許更改和刪除。MySQL 提供了幾種方式來達到這個目的。
第一種方式是在表創建時使用 NOT NULL 和 DEFAULT 關鍵字。NOT NULL 表示該字段不能為空,DEFAULT 表示該字段默認值。下面是一個例子:
CREATE TABLE users ( id INT(11) NOT NULL AUTO_INCREMENT, username VARCHAR(100) NOT NULL, password VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL, role ENUM('admin', 'editor', 'viewer') NOT NULL DEFAULT 'viewer', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) );
在上面的例子中,role 和 created_at 字段是固定字段,它們在插入數據時不允許為空,而且有默認值。
第二種方式是使用 MySQL 觸發器來實現。觸發器是 MySQL 數據庫的一種對象,可以在特定操作(如 INSERT、UPDATE、DELETE)發生時自動執行指定的操作。我們可以創建一個 BEFORE INSERT 或 BEFORE UPDATE 觸發器,在觸發器中強制設置固定字段的值。下面是一個例子:
CREATE TRIGGER set_created_at BEFORE INSERT ON users FOR EACH ROW SET NEW.created_at = NOW();
在上面的例子中,我們創建了一個觸發器 set_created_at,在每次插入數據時設置 created_at 字段為當前時間。
第三種方式是使用 ENUM 類型來限定字段的值范圍。ENUM 類型是 MySQL 中一種枚舉類型,可以定義一組可選值。下面是一個例子:
CREATE TABLE products ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, category ENUM('electronics', 'books', 'clothing') NOT NULL DEFAULT 'electronics', PRIMARY KEY (id) );
在上面的例子中,category 字段只允許輸入三種值,即 'electronics'、'books'、'clothing',如果輸入其他值會報錯。
下一篇簡述css中壓力布局