【发布时间】:2020-12-08 01:35:04
【问题描述】:
我使用 MySQL 5.6,我有 3 个表。其中两个是数据列表,第三个表用于它们之间的关系。在第三个表中,我想为每个 id1 标识一条默认记录,所以我添加了一个名为 predt 的列,让我知道哪条记录是默认记录。像这样的:
id1 | id2 | predt
1 | 1 | 0
1 | 2 | 1
1 | 3 | 0
在本例中,我将知道第二行是 id1 = 1 的默认行。
让我担心的是,对于 id1 = 1 的列 predt,可能有多个记录的值为 1。
我确认这不会发生,这是我在 SP 中插入或更新此表中的记录的第一件事。但是如果有人直接更新表,则表中没有任何限制可以阻止它这样做(如外键限制)。
create table table1 (
id int(10) not null auto_increment,
description varchar(100) not null,
primary key(id))
engine innodb,
default character set latin1;
create table table2 (
id int(10) not null auto_increment,
description varchar(100) not null,
primary key(id))
engine innodb,
default character set latin1;
create table table3 (
id1 int(10) not null,
id2 int(10) not null,
predt tinyint(1) not null default 0,
primary key(id1,id2))
engine innodb,
default character set latin1;
我总是以同样的方式处理这个案例,到目前为止它已经奏效了。但我想知道是否有更好的方法来处理这种情况。
【问题讨论】:
-
好吧,您可以将逻辑构建到 INSERT 本身中
标签: mysql sql database-design triggers