你可将那些字段定义为NULL:
DEFAULT NULL

解决方案 »

  1.   

    MySQL 是支持用户指定默认值的呀,一个字段的 DEFAULT 值必须是一个常数,它不可以是一个函数或一个表达式。
    如果一个字段没有明确定义 DEFAULT 值,MySQL 将会为这个字段自动地添加一个。
    如果这个字段允许接受  NULL 值,那么该字段的默认值为 NULL。
    如果一个字段被定义为 NOT NULL,那么它的默认值将取决于该字段类型:
    1、数值类型的字段(除定义了 AUTO_INCREMENT 属性),默认值为 0。
       而一个 AUTO_INCREMENT 的字段,默认值是它的序列的下一个数值。
    2、日期和时间类型的字段(除 TIMESTAMP),它的默认值是适当形式的 0。
       表中的第一个 TIMESTAMP 字段,它的默认值为当前日期和时间。
       详细描述请查看章节日期和时间类型(section 6.2.2 Date and Time Types)。 
    3、字符串类型字段(除 ENUM),它的默认值是一个空串。
       ENUM类型的字段,默认值为第一个枚举值(如果你没有明确地使用 DEFAULT 指定其它的默认值)。
    默认值必须是一个常数。这就意味着,举例来说,不可以为一个日期型字段设置默认值为一个函数例如 NOW() 或 CURRENT_DATE。
      

  2.   

    我的意思是“不希望有缺省值”,好像MSSQL,oracle,db2那样,这些数据库根本不会自动为你设置默认值的。
    例如,在MSSQL数据库中插入一条记录,如果某字段不允许为null,而且没有设置默认值,在insert 语句中如果不为该字段赋值,MSSQL就会报错,而MYSQL则会自动用默认值填充INSERT INTO TABLE1 (name) VALUES ()在MSSQL中报错,因为不允许null,
    insert into `table1` values()在MYSQL中自动为name填充默认值。
    其实我更多的希望MYSQL报错,而不是自作主张的为我填默认值。
    有办法吗?
      

  3.   

    呵呵,
    那没有办法了,
    MySQL 的观点是数据正确性验证应放在客户程序端进行,
    Our view is that checking of fields content should be done in the application and not in the database server.