我想要一個腳本來阻止空值條目進入數據庫。我能夠通過代碼中的某些更改來實現此目的,但我的意圖不是在代碼中更改它而是編寫可以運行以執行此任務的腳本將空值條目阻塞到數據庫中
例如,表「book」具有author_name,price,標題。 我不想允許任何輸入數據庫中有空作者姓名
我想要一個腳本來阻止空值條目進入數據庫。我能夠通過代碼中的某些更改來實現此目的,但我的意圖不是在代碼中更改它而是編寫可以運行以執行此任務的腳本將空值條目阻塞到數據庫中
例如,表「book」具有author_name,price,標題。 我不想允許任何輸入數據庫中有空作者姓名
您需要在列的定義中使用NOT NULL
子句。例如 -
CREATE TABLE book (
author_name varchar(50) NOT NULL,
price decimal(19, 2) DEFAULT NULL,
title varchar(255) DEFAULT NULL
);
這就像一個約束。
的解決方法,約束空白值 -
CREATE TRIGGER trigger1
AFTER INSERT
ON book
FOR EACH ROW
BEGIN
IF author_name = '' THEN
SIGNAL SQLSTATE VALUE '02001'
SET MESSAGE_TEXT = 'Blank value is not allowed'; -- Raise error
END IF;
END
文檔 - SIGNAL聲明。
您可以設置表最多的方式,它拒絕這樣的條目:
alter table book change column author_name <DATATYPE> NOT NULL;
多看這裏:http://dev.mysql.com/doc/refman/5.1/de/alter-table.html
按照文檔:http://dev.mysql.com/doc/refman/5.1/en/create-table.html
create_definition:
col_name column_definition
column_definition:
data_type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'string']
[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
[STORAGE {DISK|MEMORY|DEFAULT}]
[reference_definition]
你column_definition應該看起來像
author_name VARCHAR(50) NOT NULL
您可以修改表結構並將author_name設置爲非空 – 2013-04-08 06:30:39