是的,必须有默认值。
因为在SQL SERVER中NULL跟''是完全不一样的,NULL表示未知,没有类型可言,而''是有类型的,表示一个空的字符串。所以有not null约束的列是可以插入''的。
有时候做判断的时候可能某个列既有NULL值又有''值,这时候就经常用 where isnull(列名,'')=''进行判断。在ORACLE中,''是等同于NULL值进行处理的,这时候有not null约束的列就不能插入''了。
扩展资料:
SQL作为一种操作命令集, 以其丰富的功能受到业内人士的广泛欢迎, 成为提升数据库操作效率的保障。SQL Server数据库的应用,能够有效提升数据请求与返回的速度,有效应对复杂任务的处理,是提升工作效率的关键。
由于SQL Servers数据库管理系统具有较高的数据管理性能,因其优越的性能,应用范围非常广,大量应用于服务器和客户体系结构中。SQL Servers数据库的性质主要由以下几个方面体现:系统的吞吐量、响应时间以及并行处理能力, 发出请求服务器回应的速度、还有不同屏幕之间切换的速度等等。
参考资料来源:百度百科-SQL数据库
如果是not null的话,那你就必须插入一个值,你不插入值的话,就会调用默认值。
如果这两个都没有的话,就会报错了
所以,改下你的insert
insert into zc_manager(user,pass,level) values('admin','123456',-1);
sql数据库字段设置成not null的话,字段不设置默认值是不是就不能插入了?
是的,必须有默认值。貌似数字之类的它本身就有默认值0吧。
not null 你都设置成不能为空了。 你怎么插入。 再有。 别人是不是设置了default ‘’ 了 你也没看到。 如果他设置了not null 并没有设置default的话 那么他也不能插入
你可以把数据库的字段not null去掉,然后再执行~这样执行的时候,没有插入数据的字段就是null