2011-01-12 2 views
3

Это MS SQL код, если не существует вставить в MySql

if not exists (select PId from Person 
      where Name = 'Name1' and Surname = 'Surname1') 
    INSERT INTO [someDb].[dbo].[Person] 
     ([Name] ,[Surname]) 
    VALUES 
     ('Name1' ,'Surname1') 

пожалуйста, вы можете помочь мне написать Эквивалент код для моего SQL

благодаря

ответ

3

Если у вас есть уникальный индекс (имя, фамилия), вы можете использовать INSERT IGNORE:

INSERT IGNORE INTO `someDb`.`Person` 
     (`Name` ,`Surname`) 
    VALUES 
     ('Name1' ,'Surname1') 
1

В MySQL это обычно делается Обычно я делал это до того, как увидел другой ответ с

INSERT INTO table (fields) VALUES (values) ON DUPLICATE KEY UPDATE ID=ID; 

В вашем случае это потребует уникальный индекс (имя, фамилия) столбцы

+0

, что делает эта ? Я пробовал это и каждый раз вставляет новую строку – eomeroff

+0

, если у вас есть уникальный индекс в этих столбцах – Mchl

+0

на дублирующих триггерах, когда у вас есть не уникальное значение, вставленное в поле, которое должно содержать уникальное значение (либо первичный ключ, либо уникальный индекс: http://dev.mysql.com/doc/refman/5.0/en/constraint-primary-key.html) –

Смежные вопросы