Вставить данные на основе условия - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь выяснить, возможно ли вставить список объектов в таблицу, используя Dapper, но также применяя какую-то проверку, чтобы увидеть, какие данные должны быть включены.

var data = new List<TestInsertDataDto>
{
    new TestInsertDataDto { InsertId = 1, Value = 2 },
    new TestInsertDataDto { InsertId = 2, Value = 3 },
    new TestInsertDataDto { InsertId = 3, Value = 6 }
};

await connection.ExecuteAsync(@"
    INSERT INTO test_data (insertid, value)
    VALUES (@InsertId, @Value)
    -- I'd like to do a row per row check here to determine if the row should be
    -- inserted or if this row for some reason shouldn't be inserted. This check
    -- requires a query on the test_data table and a join on another table.", data)
;

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Вы можете сделать это. Я бы предложил вам создать хранимую процедуру для этого. передайте параметр в процедуру, используя dapper, и попробуйте что-то вроде приведенного ниже кода в вашей хранимой процедуре

INSERT INTO table (id, val) SELECT @InsertId, @Value WHERE EXISTS ( SELECT * FROM test_data WHERE -- your condition )
0 голосов
/ 23 января 2019

Вы можете вставить свою запись условно на основе другого запроса с помощью EXISTS или NOT EXISTS.
Это будет выглядеть так:

INSERT INTO test_data (insertid, value)
SELECT @InsertId, @Value
WHERE EXISTS (
    SELECT *
    FROM test_data
    WHERE -- some condition
)
...