使用 IBM Informix 数据库。如果我手动指定 order_no,该语句有效,但如果我尝试在查询中递增它,它就会失败。
表结构
patkey serial
notetype char(4)
order_no int
约束是 patkey、notetype 和 order_no
我可以手动插入运行以下命令并增加 order_no
insert into patnotes (patkey, notetype, order_no) values (5000, 'GEN', 3)
我想在插入语句中增加它,但我得到了重复的违规并且不明白如何。
这是我试图用来增加 order_no 的插入语句。
INSERT INTO patnotes (patkey, notetype, order_no)
SELECT FIRST 1
p.personkey,
'GEN' as notetype,
CASE WHEN n.order_no is null then 1 else (n.order_no + 1) end as order_no
FROM
person p
LEFT JOIN
patnotes n
ON p.personkey = n.patkey
AND n.notetype = 'GEN'
WHERE
p.patid = '5000'
ORDER BY
n.order_no DESC
检查表是否存在以下条目
5000, GEN, 1
5000, GEN, 2
下一个顺序应该是 3。
运行上述插入语句的选择部分给出:
5000, GEN, 3
这是正确的,但不符合约束条件。如果我在第一个插入语句中手动输入这些,就没有问题。
现在下一个奇怪的问题是,如果我清除这些条目,那么第一个条目是 order_no 1。
这将为 order_no 1 和 2 添加条目,但对于 3+ 会失败,但如果我仅在插入语句中手动指定它,则没有问题。
我没有看到我错过的东西