Sql 具有外键约束的表的锁定顺序?
如果我创建一个模式,如以下所示:Sql 具有外键约束的表的锁定顺序?,sql,h2,hsqldb,Sql,H2,Hsqldb,如果我创建一个模式,如以下所示: create table org ( org_id bigint not null auto_increment, name varchar(255) not null, primary key(org_id) ); create table user ( user_id bigint not null auto_increment, name varchar(255) not null, org
create table org
(
org_id bigint not null auto_increment,
name varchar(255) not null,
primary key(org_id)
);
create table user
(
user_id bigint not null auto_increment,
name varchar(255) not null,
org_id bigint not null,
primary key(user_id),
foreign key(org_id) references org (org_id)
);
其中,组织表有一个条目:
insert into org (name) values ('org 1');
如果运行以下sql语句:
insert into user (name, org_id) values ('user 1', 1);
表将按什么顺序锁定?它是确定性的吗?如果对另一个表有第二个外键约束,该怎么办?我认为只有一个表会被锁定,以便插入到给定的表中(假设该表没有触发器)。执行插入时,通常会在插入到的表上放置排他记录级锁。将在具有外键关系的表上放置共享锁,即插入到的表的主表