【发布时间】:2017-12-19 01:18:17
【问题描述】:
我有一个主键由三列组成的表:CODE_TARIF, UNITE, MODE_LIV。在我的表中有MODE_LIV = 2 的三个记录。然后我用MODE_LIV = 4插入一条记录。
INSERT INTO T_TARIF (
CODE_TARIF, ZONE, UNITE, MODE_LIV, LIBELLE, TR_DEBUT, TR_FIN, MONTANT
)
SELECT 'Livr_A_50_99', '2', '1', '4', 'sdg', '50', '99', '90'
UNION ALL
SELECT 'Livr_A_50_99', '2', '1', '4', 'sdg', '50', '99', '90'
UNION ALL
SELECT 'Livr_A_50_99', '2', '1', '4', 'sdg', '50', '99', '90'
它返回一个错误(违反主键),这没有任何意义,因为MODE_LIV = 2 不等于MODE_LIV = 4。
我知道我可以添加代理键作为自动递增的标识列,但在我的情况下,这不是一个选项。
【问题讨论】:
-
您正在为所有 PK 列插入 3 行具有相同值的行。 (实际上是所有非 PK 列)
标签: sql primary-key