当前位置: 代码迷 >> J2EE >> 让小弟我百撕不得骑姐的有关问题,求真相
  详细解决方案

让小弟我百撕不得骑姐的有关问题,求真相

热度:110   发布时间:2016-04-22 02:23:40.0
让我百撕不得骑姐的问题,求真相
创建数据库两个表:
1、
XML code
create table tab_user(pk_user_uuid varchar(32) primary key,f_user_name varchar(32) not null,f_user_password varchar(32) not null,f_user_role varchar(32) ,f_superuser_uuid varchar(32),f_create_time timestamp DEFAULT now(),constraint f_user_role_id foreign key(f_user_role) references tab_user_role(pk_role_id))            

2、
XML code
create table tab_user_role(pk_role_id varchar(32) primary key,f_role_name  varchar(32) not null)

上面我明明用外键引用了第二张表的主键
但是:insert into tab_user values('asdfasdf1','asdfaf','',null,'11')却能正确执行
数据库是:PostgreSql
而第二张表中只有这4个ID
"7fa6ea0e157e454b8a54d683cce57ef5"
"1a109573eb6c4d09b95b7e0fd6051d0b"
"3fb05d089cc54d47a34c41e4cae3c6c4"
"daf6a3753f9a463aabce090a95e74bf9"


想问下:为什么用null能执行成功(''肯定不行不用解释)

------解决方案--------------------
即使是外键,null也可以把,不null的话才会约束。难道不null也不约束么??

或者你改f_user_role varchar(32) not null,就不会插入Null了。。
------解决方案--------------------
引用的外键,必须为引用的那张表的主键,或者为null,是可以为null的
还有"但是我在第一张表是刚好忘了主键"这句话是什么意思
------解决方案--------------------
这个如果插不进去,才是真的有问题了。
------解决方案--------------------
探讨

即使是外键,null也可以把,不null的话才会约束。难道不null也不约束么??

或者你改f_user_role varchar(32) not null,就不会插入Null了。。

------解决方案--------------------
null 表示暂时没有跟主表中记录关联上

''是有信息的,要查主表中,是否存在“''”为主键的记录
  相关解决方案