Подтвердить что ты не робот

Синтаксис INSERT INTO SET в SQL Server

Я прихожу из mySQL в SQL Server. Не работает ли следующий синтаксис в SQL Server?

 INSERT INTO table SET fil1="234", fil2="324"

Есть ли сопоставимый оператор в SQL Server?

4b9b3361

Ответ 1

Способ вставки записей SET не является стандартным SQL. Если вам нужно использовать подобный sql для обновлений и вставок, вместо этого следует использовать хранимые процедуры в MS SQL-Server, например:

CREATE Procedure tableInsertUpdate
(
     @ID int,
     @fil1 int,
     @fil2 int,
     @IDOut int OUTPUT
)
AS
     IF EXISTS(SELECT ID from table WHERE [email protected])
     BEGIN
        UPDATE table SET
            fil1 = @fil1 
            fil2 = @fil2 
        WHERE [email protected]
        SET @IDOut=null
      END
      ELSE
      BEGIN
         INSERT INTO table 
         (fil1, fil2)
         VALUES
         (@fil1, @fil2 )
         SET @IDOut=scope_identity()
      END

Ответ 2

INSERT INTO table (fil1, fil2) VALUES ('234', '324');

Ответ 3

Это только большая проблема, имеющая уникальный оператор INSERT и Update. Вы легко поймете, если вам нужно работать с таблицами, содержащими 30 столбцов.

Вариант MySQL позволяет мне писать код один раз - и он делает все необходимое - на самом деле мне нужно только заменить имя команды в строке запроса.

Вариант MSSQL провоцирует ошибки, дважды используя один и тот же код (в отношении полей и данных для заполнения полей).

И если позже я изменю только одно имя поля, это означает изменение 2 позиций кода - в любом случае я делаю это в MSSQL. Хранимая процедура должна быть изменена, и оператор insert, который вызывает его в моем коде. Или в противном случае необходимо изменить 2 разных оператора для вставки и обновления. Этот очевидный источник ошибок полностью обвиняется (по крайней мере, с моей точки зрения) в MSSQL.