SQl2008中主键不能等于NULL,可是可以等于null,这是为什么。
我的SQl2008是NULL和null都不允许的,可是舍友的允许主键为null,这是什么原因?就是这样子,第一条记录也是奇葩的貌似是纯空格也可以了。第二条记录就是null...
我的SQl2008是NULL和null都不允许的,可是舍友的允许主键为null,这是什么原因?
就是这样子,第一条记录也是奇葩的貌似是纯空格也可以了。
第二条记录就是null状态的了。 展开
就是这样子,第一条记录也是奇葩的貌似是纯空格也可以了。
第二条记录就是null状态的了。 展开
5个回答
展开全部
1、你的理解是错误的,你说的null是字符,而你说的【NULL】应该是SQL内置的空值。
2、关系型数据库中的主键均不能为空,不管是单一列做为主键还是多列组合做为主键,都是不允许的
3、主键的概念你还不清楚,下面给你一些参考材料,你阅读后就会明白。
【主键(primary key)是表中的一个或多个字段,它的值用于惟一地标识表中的某一条记录。在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字,表定义的一部分。一个表不能有多个主关键字,并且主关键字的列不能包含空值。主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。】
2、关系型数据库中的主键均不能为空,不管是单一列做为主键还是多列组合做为主键,都是不允许的
3、主键的概念你还不清楚,下面给你一些参考材料,你阅读后就会明白。
【主键(primary key)是表中的一个或多个字段,它的值用于惟一地标识表中的某一条记录。在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字,表定义的一部分。一个表不能有多个主关键字,并且主关键字的列不能包含空值。主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。】
展开全部
不可能允许主键为null的,肯定是看错了。。。
不然MS就别卖SQL2008数据库了。。
如果真有奇迹,最好贴个截屏,他主键(primarykey,还是允许null的),俺瞻仰瞻仰 囧
不然MS就别卖SQL2008数据库了。。
如果真有奇迹,最好贴个截屏,他主键(primarykey,还是允许null的),俺瞻仰瞻仰 囧
追问
没看错啊,都好几次了,而且我们寝室装的一个版本,是不是哪里设置问题啊,还是装的有问题。
追答
让他show下表描述的截屏(用他电脑登下你的百度知道),我觉得不可能啊
回答补充:
既然是nchar(字符)数据类型,应该是他插入的学号值就是‘null',而不是空值('')
你可以用这个SQL来鉴定下:
select 学号, len(学号) from shiyan5;
▲纯空格,也就是' ',其len(' ')也有1,并不是真正意义的空值,
▲'null',len('null')=4,虽然其显示貌似空值,但你仔细观察第二行的性别、籍贯列,当为空值查询出显示的是NULL,而且是斜体,那个应该是真正意义上的空值''。len('')=0的
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两张截图中,第一个“学号”为主键,很明显不允许为NULL;第二个没有设置主键,当然都允许为NULL了。至于第二个截图的第一行第一列的“学号”,这个应该是空格吧?这得你自己核实了。空格、NULL不一样,理解这个很关键。
追问
呵呵,第一张截图就是第二张截图的设计图啊,第二张截图只是因为太长才截了前半部分来显示主要问题
追答
那也说明第二张截图里的姓名为a的学号是存在的,不过是空格而已。还是那句话,理解空格和NULL是不同的两个东西很关键。倘若你再加一行记录,学号拷贝a对应的那个学号试试,你一试就明白为什么不让你保存了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
NULL在SQL里是关键字,应该不区分大小写。如果你舍友的表允许null,那么很可能他的表定义与你的不完全相同。看看他的表定义就知道了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是该字段设置问题?
追问
肯定不是的,我们上次实验课,舍友也是出现了这个问题。
会不会是哪个地方设置有问题,我们SQL装的都是同一个版本
追答
说实在话,SQL2008我不太懂(MySQL略懂一些),一起等高手吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询