sql数据库字段设置成not null的话,字段不设置默认值是不是就不能插入了?

执行了下insertintozc_manager(user,pass)values('admin','123456');报错#1364-Field'level'doesn... 执行了下insert into zc_manager(user,pass) values('admin','123456');
报错#1364 - Field 'level' doesn't have a default value

错误说level没有默认值,不过我以前都是字段没设置默认值的,都不可以插入的
展开
 我来答
帐号已注销
2020-03-11 · TA获得超过77万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:150万
展开全部

是的,必须有默认值。

因为在SQL SERVER中NULL跟''是完全不一样的,NULL表示未知,没有类型可言,而''是有类型的,表示一个空的字符串。所以有not null约束的列是可以插入''的。

有时候做判断的时候可能某个列既有NULL值又有''值,这时候就经常用 where isnull(列名,'')=''进行判断。在ORACLE中,''是等同于NULL值进行处理的,这时候有not null约束的列就不能插入''了。

扩展资料:

SQL作为一种操作命令集, 以其丰富的功能受到业内人士的广泛欢迎, 成为提升数据库操作效率的保障。SQL Server数据库的应用,能够有效提升数据请求与返回的速度,有效应对复杂任务的处理,是提升工作效率的关键。

由于SQL Servers数据库管理系统具有较高的数据管理性能,因其优越的性能,应用范围非常广,大量应用于服务器和客户体系结构中。SQL Servers数据库的性质主要由以下几个方面体现:系统的吞吐量、响应时间以及并行处理能力, 发出请求服务器回应的速度、还有不同屏幕之间切换的速度等等。

参考资料来源:百度百科-SQL数据库

桓笑容3F
推荐于2017-11-25 · TA获得超过297个赞
知道小有建树答主
回答量:320
采纳率:0%
帮助的人:360万
展开全部
如果是not null的话,那你就必须插入一个值,你不插入值的话,就会调用默认值。
如果这两个都没有的话,就会报错了
所以,改下你的insert
insert into zc_manager(user,pass,level) values('admin','123456',-1);
追问
我刚刚看教程里那个人字段也都是not null,默认也是没的
$_sql = "INSERT INTO manage (user,pass) VALUES ('admin', '123456')";
$_stmt = $this->pdo->prepare($_sql);
$_stmt->execute();
为什么他的能执行...
追答
他有没有trigger嘛?你看过么?
trigger里面还是可以补入值的。
还有,你干嘛非要学人家呢, 这是基本的错误,没必要拿别人的来看。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
馒头和小笼包
2012-02-28 · TA获得超过163个赞
知道小有建树答主
回答量:233
采纳率:0%
帮助的人:148万
展开全部
sql数据库字段设置成not null的话,字段不设置默认值是不是就不能插入了?

是的,必须有默认值。貌似数字之类的它本身就有默认值0吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
豆芽尔
2012-02-28 · 超过14用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:40.6万
展开全部
not null 你都设置成不能为空了。 你怎么插入。 再有。 别人是不是设置了default ‘’ 了 你也没看到。 如果他设置了not null 并没有设置default的话 那么他也不能插入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
壁纸魔
2012-02-28
知道答主
回答量:43
采纳率:0%
帮助的人:17.4万
展开全部
你可以把数据库的字段not null去掉,然后再执行~这样执行的时候,没有插入数据的字段就是null
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式