我来自mySQL到SQL Server.SQL Server中的以下语法不起作用吗?
INSERT INTO table SET fil1="234", fil2="324"
Run Code Online (Sandbox Code Playgroud)
SQL Server中是否有类似的声明?
JK.*_*JK. 15
INSERT INTO table (fil1, fil2) VALUES ('234', '324');
Run Code Online (Sandbox Code Playgroud)
小智 9
只有一个很大的麻烦,有一个独特的INSERT和Update语句.如果必须使用包含30列的表,您将很容易理解.
MySQL变体允许我一次编写代码 - 它完成了两件事 - 实际上我只需要在查询字符串中替换命令的名称.
MSSQL变体通过使用几乎相同的代码(关于字段名和数据来填充字段)来引发错误2次.
如果我以后只更改一个字段名称就意味着更改2个代码位置 - 无论哪种方式我在MSSQL中都这样做.必须更改存储过程以及在我的代码中调用它的insert语句.或者需要更改插入和更新所需的2个不同语句.这个明显的错误源在MSSQL上完全被指责(至少从我的观点来看).
将SET
插入记录的方法是不是标准的SQL.如果您需要使用类似的sql进行更新和插入,则应该使用MS SQL-Server中的Stored-Procedures,例如:
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
Run Code Online (Sandbox Code Playgroud)