繁体   English   中英

表中有多个键违反主键

[英]Violation on primary key with multiple keys in table

CREATE TABLE parameters (
  tag_id BIGINT,
  id NVARCHAR(255),
  idx NVARCHAR(255),
  primary key (tag_id, idx)
);

CREATE TABLE tag
    ([oid] int, [Name] varchar(1))
;

INSERT INTO tag
    ([oid], [Name])
VALUES
    (1, 'A'),
    (2, 'B'),
    (3, 'C'),
    (4, 'D')
;

INSERT parameters (tag_id, id, idx)
SELECT tag.oid, id.a, idx.a
FROM 
    ( VALUES (1), (0), ('A'), (2) ) AS id(a), 
    ( VALUES ('a'), ('b'), ('c'), ('d') ) AS idx(a), 
    tag

这应该是输出:

tag_id              id              idx     
______________________________________________
1                   1               a
1                   0               b
1                   A               c
1                   2               d
2                   1               a
2                   0               b
2                   A               c
2                   2               d
3                   1               a
3                   0               b
3                   A               c
3                   2               d
4                   1               a
4                   0               b
4                   A               c
4                   2               d

以下是我得到的错误:

无法在对象“tag_parameters”中插入重复键。 重复键值为 (1, a)。

为什么如果我只有一个组合 (1, a)。 下一个是 (2, a)。

您可以在单values构造中使用相同的列idx

SELECT t.oid, a.id, a.idx
FROM tag t CROSS JOIN
    ( VALUES ('1', 'a'), ('0', 'b'), ('A', 'c'), ('2', 'd') 
    ) AS a(id, idx); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM