SQL – MS Access是否抑制插入的主键冲突?
|
我正在重新编写MS Access数据库到SQL服务器,并在Access中发现了一个奇怪的问题,我希望有人可以提供帮助. 我有一个表,让我们称之为’Main’,并在索引的帐户上使用主键,并且不允许重复.看起来很简单但我的问题是在数据被插入时发生的. 我的INSERT查询是(为简洁起见,字段数量有限) INSERT INTO Main (Account,SentDate,Amount)
SELECT C.Account,C.SentDate,C.Amount
FROM
(CALLS C LEFT JOIN Bals B ON C.Account = B.ACCT_ID)
LEFT JOIN AggAnt A ON C.Account = A.Account
问题是,如果我运行查询的SELECT部分??,我得到2365条记录但是当我运行INSERT时,我得到2364条记录.所以我做了一些检查,发现一个帐户重复,记录之间的差异是SentDate和Amount.但Access只插入其中一条记录而不会抛出任何类型的错误消息或任何内容.查询中没有任何内容表示选择最近的日期等. 样本数据: Account SentDate Amount 12345678 8/1/2011 123.00 23456789 8/1/2011 45678.00 34567890 8/1/2011 7850.00 45678912 8/1/2011 635.00 45678912 5/1/2011 982.00 56789123 8/1/2011 2639.00 在示例中,当我运行INSERT时,我有一个重复的帐户45678912,我没有错误,我从2011年8月1日获得了记录. 为什么Access违反表中的PK时不会抛出错误?在Access中有一些怪癖选择一条记录而只是跳过另一条记录吗? 我完全被这个问题困扰所以任何帮助都会很棒. 解决方法你是如何运行查询的?如果您正在使用DoCmd.RunSQL,请切换到使用DAO数据库对象的.Execute方法,并使用dbFailOnError.Dim db As DAO.Database Dim strInsert As String strInsert = "your insert statement" Set db = CurrentDb db.Execute strInsert,dbFailOnError Set db = Nothing 编辑:如果Main是SQL Server表的ODBC链接,我会在db.Execute strInsert,dbFailOnError之后检查Errors Collection (DAO) (编辑:海洋资讯信息网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- HTML表格标记教程(28):单元格的边框色属性BORDERCOLOR
- sql-server – SQL Server游标参考(语法等)
- HTML表格标记教程(37):表头的背景图象属性BACKGROUND
- Longhorn Build 4051泄漏版预览
- sql-server – DELETE vs TRUNCATE
- sql-server-2008 – “无法找到存储过程”,即使已在MS SQL
- 美研究者在软件中嵌入debug 缺陷将暴露无遗
- sql-server – T-SQL DROP TYPE IF EXISTS
- html直接引用vue和element-ui的方法
- html中input提示文字样式修改的示例代码

