问题是:
有没有办法同时指明隐含和&明确的同一性INSERT
?
INSERT INTO target (id, name)
VALUES
(1, 'machin')
, (2, 'chouette')
, (3, 'trutruc')
, (NULL, 'chouchouette')
, (NULL, 'chose')
;
或者我是否必须进行2次不同的查询?
请结帐my fiddle
上下文:我正在向用户创建一个内联编辑器给用户,他可以在其中创建/更新/删除值。当他提交它时,我正在取代这些价值观。由于这些值与其他对象有关,我试图尽可能地保留它们的ID。
答案 0 :(得分:2)
不,你必须使用单独的查询。要甚至插入IDENTITY
列,您必须转为IDENTITY_INSERT
ON
- 此时,您告诉服务器“相信我,我会提供适当的值”。< / p>
我尝试构建一个使用IDENT_CURRENT
并计算NULL
个身份值的查询,但无法保证IDENT_CURRENT
被调用的次数以及它的值是多少返回,因此很难产生与服务器在正常情况下产生的结果相同的结果。
答案 1 :(得分:0)
当他提交时,我正在替换这些值。
这被称为严重的编程错误。
问题在于身份是一种身份,如果您删除/插入而不是更新,请确保您永远不能使用参照完整性。 RI是拥有良好数据的核心基础 - 这种方法非常有效。
这里的主要问题不是“使用特定值插入”,而是“为什么要插入而不是更新”。