Как проверить, существует ли запись с составным ключом в базе данных MySQL перед тем, как вставить ее с помощью Dapper в C # - PullRequest
0 голосов
/ 02 октября 2018

Поставщик и Счет-фактура являются составными ключами в таблице, которая состоит из 9 полей

1 Ответ

0 голосов
/ 02 октября 2018

Вы можете сначала выполнить запрос SELECT, а затем вставить или сделать это за одну поездку, как показано ниже (SQL Server).Вы можете использовать одно из рекомендуемых расширений Dapper из списка здесь

string cmd = @"IF NOT EXISTS (SELECT * FROM Table1 WHERE SupplierId=@SupplierId AND InvoiceId=@InvoiceId)
                    BEGIN 
                        INSERT INTO Table1(SupplierId, InvoiceId) VALUES(@SupplierId, @InvoiceId)
                    END";

using (var dbConn = new SqlConnection("Server=(local);Database=MyDatabase;Integrated Security=true"))
{
    dbConn.Execute(cmd, new { SupplierId = 1, InvoiceId = 2 });
}
Console.ReadKey();

ОБНОВЛЕНИЕ Для MySQL вы можете написать что-то вроде

INSERT INTO Table1 (SupplierId, InvoiceId) VALUES(@SupplierId, @InvoiceId) ON DUPLICATE KEY SupplierId=SupplierId

https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

...