[英]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.