оптимистичной блокировкойНет. Нужна пессимистическая.
Пессимистическая блокировка схожа с принципом Мерфи. Она предполагает, что если что-то плохое может случится, это обязательно случится. В отличии от пессимистической, оптимистическая блокировка предполагает что во время обновления записи в БД мы будем единственными кто ее меняет. В большинстве случаев, так и есть, так что оптимизм оправдан. Тем не менее, во время UPDATE’а мы проверяем наверняка изменилась ли запись с момента ее чтения. И если изменилась, то мы обязаны прочитать последнюю версию записи из БД и повторить нашу операцию с ней.
Примечание: в команде SELECT каждое выражение оценивается только при отправлении клиенту. Это означает, что в условиях HAVING, GROUP BY, or ORDER BY не следует ссылаться на выражение, содержащее переменные, которые введены в части SELECT этой команды.
для MS SQL я напишу такое, функция разбиения строки по символу разделителю пишется в строк 10Есть готовая STRING_SPLIT.
select top 1 ID from table where ID<>POSITION order by ID
Дублирующаяся запись '*' по ключу 'Parent'Уберите уникальность у этого ключа.
CAST( DATEDIFF( Year, BirthDay, ISNULL( DeathDay, GETDATE())) + ( SIGN ( DATEDIFF ( DAY, BirthDay, DATEADD ( YEAR, YEAR( BirthDay ) - YEAR( ISNULL( DeathDay, GETDATE()) ), ISNULL( DeathDay, GETDATE())))) - 1 ) / 2 AS VARCHAR)
Как сохранить несколько значение в переменную?Для MS SQL можно использовать функции работы со списками. STRING_SPLIT (Transact-SQL) и STRING_AGG (Transact-SQL).
DECLARE @Role TABLE(Role VARCHAR(100))
INSERT INTO @Role SELECT TRIM( value ) FROM STRING_SPLIT( @RLR, ',' )
INSERT INTO @Role SELECT TRIM( value ) FROM STRING_SPLIT( @ROL, ',' )
WHERE TRIM( value ) NOT IN ( SELECT [Role] FROM @Role )
DELETE @Role WHERE (TRIM( [Role] ) = '')
SELECT @RLR = STRING_AGG ( [Role], ', ' ) FROM @Role
Поэтому я и задал такой вопрос, так как банально не знаю, как еще могу реализовать, чтобы файл был в нескольких категориях одновременно и спокойно искался по базе.У вас проблема с СУБД. Она не поддерживает операции со списками: STRING_SPLIT (Transact-SQL).