Вставить данные из формы в таблицу - PullRequest
0 голосов
/ 23 мая 2018

У меня есть таблица «Счета-фактуры», которая содержит поля UserID, PurchaseOrderID и InvoiceRef, ни одно из которых не является первичным ключом.

Я хочу создать форму с таблицей, в которую я вставляю информацию о счетах, а затем, нажав кнопку, запускается VBA и вставляет данные в таблицу Invoices.Большинство, что я могу сделать, но SQL-часть, которую я не могу понять, это как предотвратить дубликаты, под дубликатом я подразумеваю счет с UserID, PurchaseOrderID и InvoiceRef, который уже существует в таблице Invoices, например,если таблица Invoices уже содержит:

UserID  | PurchaseOrderID |  InvoiceRef  
10001   | PO123123        |  9991

Будет вставлено:

UserID  | PurchaseOrderID |  InvoiceRef  
10001   | PO123123        |  9992

, но не:

UserID  | PurchaseOrderID |  InvoiceRef  
10001   | PO123123        |  9991

Ниже приведен SQL, который я играюс, но я застрял в предложении WHERE:

    INSERT INTO INVOICES
      (UID, POID, REFID)
    SELECT IMPORT.UID,
           IMPORT.POID,
           IMPORT.REFID
    FROM INVOICES
    WHERE NOT EXISTS(STUCK HERE)

Ответы [ 2 ]

0 голосов
/ 23 мая 2018
ALTER TABLE INVOICES
  ADD CONSTRAINT <name u wish> UNIQUE(UserID, PurchaseOrderID,InvoiceRef);

Итак, что происходит, когда вы вставляете запись, если существует комбинация из трех столбцов, она не позволяет вставлять эту запись.

0 голосов
/ 23 мая 2018

, если вы просто хотите избежать дублирования записей, создайте индекс:

create unique nonclustered index x on INVOICES (UID, POID, REFID) with (ignore_dup_key=on);

, это не позволит вставлять дубликаты (опция ignore_dup_key=on делает это)

...