Вопросы с тегом «merge»

1
MERGE подмножество целевой таблицы
Я пытаюсь использовать MERGEоператор для вставки или удаления строк из таблицы, но я хочу воздействовать только на подмножество этих строк. В документации MERGEесть довольно строго сформулированное предупреждение: Важно указать только столбцы из целевой таблицы, которые используются для сопоставления. То есть укажите столбцы из целевой таблицы, которые сравниваются с соответствующим столбцом …

2
Как вставить или обновить с помощью одного запроса?
У меня есть тест таблицы с идентификатором столбцов, который первичный ключ и автоматически увеличивается и имя. Я хочу вставить новую запись, если и только если нет записей. Например, ввод id = 30122 и имя = Джон если есть записи с идентификатором 30122, я обновляю столбец имени до john, если нет …

1
Почему этот оператор MERGE вызывает прерывание сеанса?
У меня есть следующее MERGEзаявление, которое выдается против базы данных: MERGE "MySchema"."Point" AS t USING ( SELECT "ObjectId", "PointName", z."Id" AS "LocationId", i."Id" AS "Region" FROM @p1 AS d JOIN "MySchema"."Region" AS i ON i."Name" = d."Region" LEFT JOIN "MySchema"."Location" AS z ON z."Name" = d."Location" AND z."Region" = i."Id" …

4
Заявление о слиянии само блокируется
У меня есть следующая процедура (SQL Server 2008 R2): create procedure usp_SaveCompanyUserData @companyId bigint, @userId bigint, @dataTable tt_CoUserdata readonly as begin set nocount, xact_abort on; merge CompanyUser with (holdlock) as r using ( select @companyId as CompanyId, @userId as UserId, MyKey, MyValue from @dataTable) as newData on r.CompanyId = newData.CompanyId …

1
Каковы мои варианты блокировки для оператора слияния?
У меня есть хранимая процедура, которая выполняет MERGEзаявление . Кажется, что при выполнении слияния по умолчанию блокируется вся таблица. Я вызываю эту хранимую процедуру внутри транзакции, где я также делаю некоторые другие вещи, и я хотел бы, чтобы она блокировала только затронутые строки. Я попробовал подсказку, MERGE INTO myTable WITH …

2
Является ли MERGE с OUTPUT лучшей практикой, чем условный INSERT и SELECT?
Мы часто сталкиваемся с ситуацией «Если не существует, вставьте». Блог Дэна Гусмана содержит отличное исследование о том, как сделать этот процесс безопасным. У меня есть базовая таблица, которая просто каталогизирует строку в целое число из SEQUENCE. В хранимой процедуре мне нужно либо получить целочисленный ключ для значения, если оно существует, …

1
MERGE предотвращение блокировки
В одной из наших баз данных у нас есть таблица, к которой интенсивно одновременно обращается несколько потоков. Потоки обновляют или вставляют строки через MERGE. Есть также потоки, которые время от времени удаляют строки, поэтому данные таблицы очень изменчивы. Потоки, выполняющие upserts, иногда страдают от взаимоблокировки. Проблема выглядит аналогично описанной в …

1
Является ли использование нескольких уникальных ограничений на одной таблице плохим дизайном?
Я посмотрел на INSERT INTO .. ON CONFLICT (..) DO UPDATE ..синтаксис PostgreSQL и понял, что вы не можете сделать несколько уникальных проверок ограничений с ним. Я имею в виду, что вы либо ссылаетесь на составной уникальный индекс по именам столбцов ON CONFLICT (Name, Symbol)(если уникальный индекс определен для этих …

1
Переполнение размера строки слияния в SQL Server - «Невозможно создать строку размера ...»
Целевая таблица, с которой я пытаюсь объединить данные, имеет ~ 660 столбцов. Код для слияния: MERGE TBL_BM_HSD_SUBJECT_AN_1 AS targetTable USING ( SELECT * FROM TBL_BM_HSD_SUBJECT_AN_1_STAGING WHERE [ibi_bulk_id] in (20150520141627106) and id in(101659113) ) AS sourceTable ON (...) WHEN MATCHED AND ((targetTable.[sampletime] <= sourceTable.[sampletime])) THEN UPDATE SET ... WHEN NOT MATCHED …

1
MERGE с OUTPUT, похоже, не правильно делает
Я добавляю внешний ключ в таблицу и удаляю все строки, которые нарушают FK, копируя их в таблицу ModifiedTable_invalid. Как часть сценария, у меня есть следующая команда MERGE: MERGE ModifiedTable t1 USING TargetTable tt ON t1.JoinColumn = tt.JoinColumn WHEN MATCHED THEN UPDATE SET t1.FkColumn = tt.FkSource WHEN NOT MATCHED BY SOURCE …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.