我有一个有很多行的表,但是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)
);

检查整个表的触发器的替代方法通常执行得相当糟糕,因为它必须序列化写访问。

10-06 06:19
查看更多