怎么解决MySQL非常讨厌的每个字段默认有缺省值的问题?? 你可将那些字段定义为NULL:DEFAULT NULL 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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。 我的意思是“不希望有缺省值”,好像MSSQL,oracle,db2那样,这些数据库根本不会自动为你设置默认值的。例如,在MSSQL数据库中插入一条记录,如果某字段不允许为null,而且没有设置默认值,在insert 语句中如果不为该字段赋值,MSSQL就会报错,而MYSQL则会自动用默认值填充INSERT INTO TABLE1 (name) VALUES ()在MSSQL中报错,因为不允许null,insert into `table1` values()在MYSQL中自动为name填充默认值。其实我更多的希望MYSQL报错,而不是自作主张的为我填默认值。有办法吗? 呵呵,那没有办法了,MySQL 的观点是数据正确性验证应放在客户程序端进行,Our view is that checking of fields content should be done in the application and not in the database server. 刚写mySQL,求教 订单里的这几种状态各位会放在一个字段里,还是若干字段里 Mysql_front如何注册 谁知道,我用postgresql数据库连接时不用密码就能连接上了,postgresql的用户是设了密码的. 问一个asp用odbc连接远程postgresql数据库的问题 关于在mysql中使用ALTER语句 mysql4.0在redhat7.3上安装完毕后,为什么不启动, sql根据一个表更新另外的表 mysql如何insert into varbinary数据 cluster搭建 虚拟机问题 一个很好的mysql客户端操作工具 当输入数据非法时,mqsql是否会报错?
如果一个字段没有明确定义 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。
例如,在MSSQL数据库中插入一条记录,如果某字段不允许为null,而且没有设置默认值,在insert 语句中如果不为该字段赋值,MSSQL就会报错,而MYSQL则会自动用默认值填充INSERT INTO TABLE1 (name) VALUES ()在MSSQL中报错,因为不允许null,
insert into `table1` values()在MYSQL中自动为name填充默认值。
其实我更多的希望MYSQL报错,而不是自作主张的为我填默认值。
有办法吗?
那没有办法了,
MySQL 的观点是数据正确性验证应放在客户程序端进行,
Our view is that checking of fields content should be done in the application and not in the database server.