创建数据库两个表:
1、
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、
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能执行成功(''肯定不行不用解释)
1、
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、
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的话,就插不进去。