Как вставить новую строку в таблицу только в том случае, если такого же значения не существует, иначе обновить соответствующее содержимое? - PullRequest
0 голосов
/ 18 сентября 2018

Таблица:

emergency_tab (user_id, emergency_no)

и

Ограничения(user_id [primary key])

Когда получены id и no, мне потребовалось insert, чтобы значения user_id и emergency_no столбцов в emergency_tab.И если существует столбец с таким же user_id, я просто хотел бы обновить emergency_no, только не нужно insert новую строку.

Я использую Visual Studio 2010 и MS SQL Server 2008, встроенные в vs10

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Работает

 IF (SELECT COUNT(*) FROM emergency_tab WHERE user_id='?')<>0
    BEGIN
         --UPDATE
    END 

ELSE    
     BEGIN
       --INSERT
     END
0 голосов
/ 18 сентября 2018

Я считаю, что это называется "upsert", вы можете использовать ключевое слово MERGE, например ::

MERGE [devLaserViso].[dbo].[Machine] t WITH (HOLDLOCK) 
USING [devLaserViso].[dbo].[TempMachine] s
ON (s.MachineName = t.MachineName)
WHEN MATCHED THEN 
    UPDATE SET t.MachineName = s.MachineName,
               t.ProgramName =s.ProgramName
WHEN NOT MATCHED BY TARGET THEN 
    INSERT (MachineName,ProgramName) VALUES (s.MachineName, s.ProgramName);

С https://stackoverflow.com/a/50232866

...