Если использоваться с SQL Server 2000/2005, исходный код должен быть включен в транзакцию, чтобы удостовериться, что данные остаются последовательными в параллельном сценарии.
BEGIN TRANSACTION Upsert
update myTable set Col1=@col1, Col2=@col2 where ID=@ID
if @@rowcount = 0
insert into myTable (Col1, Col2) values (@col1, @col2)
COMMIT TRANSACTION Upsert
Это понесет дополнительные расходы производительности, но гарантирует целостность данных.
Добавляют, как уже предложено, СЛИЯНИЕ должно использоваться где это возможно.
Я считаю, что код (учитывая, что слой
- это ваш CALayer
)
[layer retain];
CALayer *superlayer = layer.superlayer;
[layer removeFromSuperlayer];
[superlayer addLayer:layer];
[layer release];
будет делать то, что вы хотите, хотя и окольным путем.