【发布时间】:2013-05-24 11:40:35
【问题描述】:
我在访问中有一个查询,假设在插入之前检查该项目是否已存在于数据库中:
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 not exists 语法是错误的?
编辑:
好的,我已按照建议添加了一个“双”表,并粘贴了此问题的代码副本:Table-less UNION query in MS Access (Jet/ACE)
尝试添加如图所示的约束给了我这个错误:
按确定后,它会突出显示“检查”一词
我从来没有真正处理过约束(至少在访问中..)我的语法可能是错误的
编辑 2:
使用 ctrl G 命令添加约束
当我按下回车键时...
使用 ADO 添加约束:
当我按下运行时...
【问题讨论】:
-
你不应该在'values'和括号之间加一个空格吗?不确定是否需要,但值得一试...
-
@JustinKirk 您必须从 ADO 执行
ALTER TABLE。使用CurrentProject.Connection.Execute -
我没有使用 ADO,我使用的是 oledb xD ,有没有在访问权限内执行此操作的方法?
-
如果您不想使用我的
CreateDualTable过程,您可以通过打开即时窗口 (Ctrl+g) 在 Access 中使用 ADO 执行该语句,将下一条评论中的文本粘贴为一行,然后按回车执行它。 -
CurrentProject.Connection.Execute "ALTER TABLE Dual ADD CONSTRAINT there_can_be_only_one CHECK ((SELECT Count(*) FROM Dual) = 1);"
标签: ms-access