簡體   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