4.02 插入默认值

问题:

定义表时可以为某些列定义默认值,现要以默认值插入一行,而无需指定各列的值。看一下下面列出的表:

create table D (id interger default 0)

要插入零值,而不像在insert语句的值列表中明确得为该行指定0值,这里明确的要求插入默认值,而不管默认值是什么。

解决方案;

所有数据库系统都支持使用default关键字显示的指定某列插入默认值,有些数据库系统还有其他的方法来解决这个问题。

下面的例子说明了使用default关键字来解决这个问题的方法:

insert into D values (default)

当不需要将表中所有列都插入值时,也可以明确的指定要使用默认值的列名称

insert into D(id) values(default)

讨论:

在值列表中的default关键字为相应列插入默认值,默认值在创建表时定义,所有的dbms中都可以使用此关键字。

如果表的每列都定义了默认值(表D就是这种情况),MySQL 也可以使用其他的方法。例如,可以使用空Values列表来用默认值创建行;否则,就需要对表中的每一行指定default

如果一个表部分列有默认值,部分列没有默认值,要向某列中插入默认值只要将该列排除在插入列表之外,都不需要使用default关键字,假设表D有另外一列没有定义默认值:

create  table D (id integer default 0, foo varchar(10))

在插入列表中只猎虎foo字段,id中就可以插入默认值:

insert into D (name) values (‘Bar‘)
使用上述语句的结果是FOO字段值为“Bar”而id字段的值为“0”。ID字段的值为0是因为没有对其指定其他值。

时间: 2024-11-05 02:17:52

4.02 插入默认值的相关文章

添加数据时如何向表中插入默认值?

建了一个表,建表SQL语句如下:CREATE TABLE `myuser` (  `uid` int(11) unsigned NOT NULL auto_increment,  `username` varchar(250) NULL default '王兵',  `photo` varchar(250) NULL default '32423342',  PRIMARY KEY  (`uid`),) ENGINE=InnoDB DEFAULT CHARSET=gbk; username和ph

mysql 插入默认值的问题 sql-mode

刚好碰到如果不给默认值mysql数据就插入不成功的问题,后来百度了很多,试了下结果 把my.ini里面的[mysqld]的sql-mode 换成下面的一行,如果没有则添加 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

MySQL5.0+提示字段没有默认值(doesn’t have a default value)的解决方法

方法一: 打开my.ini,查找 sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION” 修改为 sql-mode=”NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION” 然后重启MYSQL . 方法二: MySQL 5 uses a strict mode which needs to be disabled. In Windows, Goto Start–>Progr

关于有默认值的字段在用EF做插入操作时的思考

今天在用EF做插入操作的时候发现数据库中一个datetime类型的字段(CreateDate)的值居然全部为null.于是赶紧看表结构发现CreateDate字段居然是允许为空的. 虽然为空,但是设置了默认值getdate(),按说不应该为null的.于是开始测试. 字段允许Null值的情况 Users表结构如下: 假如一个字段有了默认值,并且又允许为Null,在做插入操作时会发生什么? 如上图中的表结构,CreateDate是允许为null的,而又有默认值getdate().这样在用传统SQL

关于有默认值的字段在用EF做插入操作时的思考(续)

原文:关于有默认值的字段在用EF做插入操作时的思考(续) 问题描述 今天下午(看现在这时间,应该是昨天下午了哈),园友 choon 写了这样一篇博文<关于有默认值的字段在用EF做插入操作时的思考>. 博文内容主要记录的是 choon 使用 EF 做数据插入与更新时,字段默认值的问题,这个问题我们平常应该都会遇到,但是,最后博文内容包括评论,并没人能给出一个准确的答案,真是很可惜(知识点的博文都是一侃一大堆,而这些实际项目遇到的问题却回答不上来,又有什么用呢,哎...).详细内容请查看上面的博文

hibernate插入实体类【数据库默认值】不生效的问题

第一个问题老生常谈 如果表结构设置默认值 数据库实体类不对该字段进行复制的情况下插入数据记录 字段直接以数据库设置的默认值进行插入hibernate本身可以根据XML配置进行生效此配置 1 <hibernate-mapping 2     package="*.entity"> 3     <class name="ProEntity" table="PRODUCTINFO" dynamic-insert="true&

小学生之Hibernate插入数据修改数据使用数据库默认值的实现

最近在写一个案例,定时任务对数据库进行更新操作,废话不多说,上代码: 1 @Component("taskJob") 2 public class TaskJob extends HibernateDaoSupport { 3 4 @Resource 5 private SessionFactory sessionFactory; 6 7 @PostConstruct 8 public void init() { 9 setSessionFactory(sessionFactory);

MySQL 5.6比较重要的参数,以及5.5到5.6默认值有过变化的参数

新参数说明和设置,这里说下5.6比较重要的参数,以及5.5到5.6默认值有过变化的参数. MySQL Server参数: 1,optimizer_switch:优化器选项. Variable_name: optimizer_switch Value: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index

SQL 自定义函数(Function)——参数默认值

sql server 自定义函数分为三种类型:标量函数(Scalar Function).内嵌表值函数(Inline Function).多声明表值函数(Multi-Statement Function) 标量函数:标量函数是对单一值操作,返回单一值. 内嵌表值函数:内嵌表值函数的功能相当于一个参数化的视图.它返回的是一个表,内联表值型函数没有由BEGIN-END 语句括起来的函数体. 多声明表值函数:它的返回值是一个表,但它和标量型函数一样有一个用BEGIN-END 语句括起来的函数体,返回值