我在访问中有一个查询,假设在插入之前检查该项是否已存在于数据库中:
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')
Run Code Online (Sandbox Code Playgroud)
现在,我之前遇到过这个错误,但通常是在没有表的情况下,例如,如果你"从测试表中选择*"并输入"Select*"并省略from子句,则会得到相同的错误.但我有一张桌子?也许我的哪里不存在语法错了?

编辑:
好的,我已经添加了一个表"Dual",建议使用从此问题粘贴的代码副本:MS Access(Jet/ACE)中的无表UNION查询
尝试添加如图所示的约束给了我这个错误:

按下确定后突出显示"检查"
我从来没有真正处理过约束(在访问至少...)我的语法可能是错误的
编辑2:
使用ctrl G命令添加约束

当我按下回车...

使用ADO添加约束:

当我按下跑...

这是Dual表格有用的情况之一.一个Dual表是可以用在单行表从查询的WHERE子句,你并不真的需要一个源表,但SQL解析器坚持那里是一个.
一些数据库系统(例如,Oracle)提供Dual虚拟表作为"标准设备",但在Access中我们需要创建自己的.对于过程的一个极好的说明检查HansUp的答案在这里.
所以,一旦你的[双]表就位,即
id
--
1
Run Code Online (Sandbox Code Playgroud)
...然后你可以使用这个查询执行你的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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7929 次 |
| 最近记录: |