在SQL Server中插入INTO语法

时间:2011-08-07 15:55:05

标签: sql sql-server

我来自mySQL到SQL Server。 SQL Server中的以下语法不起作用吗?

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

SQL Server中是否有类似的声明?

3 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:9)

只有一个很大的麻烦,有一个独特的INSERT和Update语句。如果必须处理包含30列的表,您将很容易理解。

MySQL变体允许我一次编写代码 - 它完成了两件事 - 实际上我只需要在查询字符串中替换命令的名称。

MSSQL变体通过使用几乎相同的代码(关于填充字段的字段名和数据)来引发错误2次。

如果我稍后只更改一个字段名称,则意味着更改2个代码位置 - 无论哪种方式,我都会在MSSQL中执行此操作。必须更改存储过程以及在我的代码中调用它的insert语句。或者需要更改插入和更新所需的2个不同语句。这个明显的错误源在MSSQL上完全被指责(至少从我的角度来看)。

答案 2 :(得分:8)

SET插入记录的方式不是standard 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 ID=@ID)
     BEGIN
        UPDATE table SET
            fil1 = @fil1 
            fil2 = @fil2 
        WHERE ID=@ID
        SET @IDOut=null
      END
      ELSE
      BEGIN
         INSERT INTO table 
         (fil1, fil2)
         VALUES
         (@fil1, @fil2 )
         SET @IDOut=scope_identity()
      END