我有一个有很多行的表,但是name和id列总是需要彼此相等。
例子:
name id value
'josh' 1 'blah'
'josh' 1 'foo'
'marc' 2 'bar'
'marc' 2 'boo'
在任何时候都不应该有一个名为'乔希'的行在哪里id!=1但组合键可能重复多次(因此它不是主键)。
最佳答案
这些数据看起来不正常。
如果您仍然可以更改表设计,我将创建一个单独的表:
create table example_people (
id int not null primary key,
-- unique constraint fixes problem identified by philipxy
name varchar not null unique
)
然后重新定义现有表为:
create table example_value (
id int not null,
value varchar,
constraint fk_value foreign key (id) references example_people (id)
);
检查整个表的触发器的替代方法通常执行得相当糟糕,因为它必须序列化写访问。