我在 access 中有一个查询,应该在插入之前检查该项目是否已存在于数据库中:
INSERT INTO FinalizedPrintedStickers
Values('0000846043-481-9-0',
'48IG - 1F Straight Panel ',
'481 ',
'0',
'0',
'',
'210',
'Printed')
WHERE NOT EXISTS(SELECT [SN] FROM FinalizedPrintedStickers Where SN = '0000846043-481-9-0')
现在,我以前也遇到过这个错误,但通常是在没有表的情况下,例如,如果您“从测试表中选择*”并键入“选择*”并省略from子句,您会得到相同的错误。但我有一张桌子?也许我的 where notexists 语法是错误的?
Edit:
好的,我已经按照建议添加了一个表“Dual”,并从这个问题粘贴了代码副本:MS Access (Jet/ACE) 中的无表 UNION 查询 https://stackoverflow.com/questions/7933518/table-less-union-query-in-ms-access-jet-ace/7933927#7933927
Attempting to add a constraint as shown gave me this error :
我按“确定”后,它会突出显示“检查”一词
我从来没有真正处理过约束(至少在访问方面......)我的语法可能是错误的
Edit 2:
使用 ctrl G 命令添加约束
当我按下回车键时...
使用 ADO 添加约束:
当我按下运行键时...
这是其中一个案例Dual
表可能会有所帮助。 ADual
table 是一个单行表,当您实际上不知道时,可以在查询的 FROM 子句中使用它need源表,但 SQL 解析器坚持要求有一个源表。
一些数据库系统(例如 Oracle)提供了Dual
虚拟表作为“标准设备”,但在Access中我们需要创建自己的。有关该过程的精彩描述,请查看 HansUp 的答案here https://stackoverflow.com/a/7933927/2144390.
因此,一旦您的[双]表就位,即:
id
--
1
...然后您可以使用此查询执行 INSERT(或不执行...):
INSERT INTO FinalizedPrintedStickers
(
SN,
Field2
)
SELECT
"0000846043-481-9-0" AS SN,
"48IG - 1F Straight Panel" AS Field2
FROM Dual
WHERE DCount("SN","FinalizedPrintedStickers","SN=""0000846043-481-9-0""")=0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)