我有一个表'发票',其中包含UserID
,PurchaseOrderID
和InvoiceRef
字段,它们都不是主键。
我想创建一个带有表格的表单,我在其中粘贴发票信息,然后单击按钮VBA运行并将数据粘贴到Invoices
表中。我能做的最多但是我无法理解的SQL部分是如何防止重复,重复我是指UserID
,PurchaseOrderID
和InvoiceRef
的发票已经存在于{ {1}}表,例如,如果Invoices
表已经包含:
Invoices
它将插入:
UserID | PurchaseOrderID | InvoiceRef
10001 | PO123123 | 9991
但不是:
UserID | PurchaseOrderID | InvoiceRef
10001 | PO123123 | 9992
下面是我正在玩的SQL,但是我遇到了WHERE子句:
UserID | PurchaseOrderID | InvoiceRef
10001 | PO123123 | 9991
答案 0 :(得分:3)
ALTER TABLE INVOICES
ADD CONSTRAINT <name u wish> UNIQUE(UserID, PurchaseOrderID,InvoiceRef);
所以,它的作用是每当你插入一条记录时,如果存在三列的组合,就不会让你插入那条记录。
答案 1 :(得分:2)
如果您只是想避免重复写入,请创建索引:
create unique nonclustered index x on INVOICES (UID, POID, REFID) with (ignore_dup_key=on);
这将不允许插入重复项(选项ignore_dup_key=on
执行此操作)