将空值条目阻塞到数据库中

时间:2013-04-08 06:27:59

标签: mysql database

我想要一个脚本来阻止null值输入到数据库中。我能够通过代码中的一些更改来做到这一点,但我的意图是不在代码中更改它而是编写一个可以运行来完成此任务的脚本

例如表“book”有author_name,price,title。 我不想允许任何进入具有null author_name

的数据库

3 个答案:

答案 0 :(得分:5)

您需要在列的定义中使用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声明。

答案 1 :(得分:0)

您可以通过某种方式设置表格,拒绝此类条目:

alter table book change column author_name <DATATYPE> NOT NULL;

在此处查看更多内容:http://dev.mysql.com/doc/refman/5.1/de/alter-table.html

答案 2 :(得分:0)

根据文件: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