Я использую программу C# для передачи данных CSV в базу данных SQL Server Express. Я использую следующую строку SQL, чтобы удостовериться, что двойники не введены в базу данных.
"INSERT INTO Transacties (DebetRekening, CreditRekening, Datum, Bedrag, VolgNummer, Munt, Code, Betalingskenmerk, Omschrijving)
SELECT
@DebetRekening, @CreditRekening, @Datum, @Bedrag, @VolgNummer,
@Munt, @Code, @Betalingskenmerk, @Omschrijving
WHERE NOT EXISTS (SELECT TOP 1(TransactieID)
FROM Transacties
WHERE DebetRekening LIKE @DebetRekening
AND CreditRekening LIKE @CreditRekening
AND Datum LIKE @Datum
AND Bedrag LIKE @Bedrag
AND VolgNummer LIKE @VolgNummer
AND Munt LIKE @Munt
AND Code LIKE @Code
AND Betalingskenmerk LIKE @Betalingskenmerk
AND Omschrijving LIKE @Omschrijving)"
Добавлены разрывы строк, чтобы сделать ее читабельной, это единственная строка в программе.
Здесь я включаю запись, если только я не могу найти эту запись в базе данных.
Даже когда я знаю, что запись, которую я пытаюсь ввести, находится в базе данных, SQL не может найти он просто вводит двойное число.
Если я опущу все операторы AND примерно так:
"INSERT INTO Transacties
(DebetRekening, CreditRekening, Datum, Bedrag, VolgNummer, Munt, Code, Betalingskenmerk, Omschrijving)
SELECT @DebetRekening, @CreditRekening, @Datum, @Bedrag, @VolgNummer, @Munt, @Code, @Betalingskenmerk, @Omschrijving
WHERE NOT EXISTS
(
SELECT TOP 1(TransactieID)
FROM Transacties
WHERE
DebetRekening LIKE @DebetRekening
)"
Он найдет существующую запись и не введет ее дважды.
Это не зависит от того, какой параметр я использую, пока есть только один. Как только я вхожу в «И», чтобы проверить другое поле, он больше не может найти записи.
Что мне здесь не хватает?