相关疑难解决方法(0)

SQL Server上INSERT或UPDATE的解决方案

假设一个表结构MyTable(KEY, datafield1, datafield2...).

通常我想要更新现有记录,或者如果新记录不存在则插入新记录.

实质上:

IF (key exists)
  run update command
ELSE
  run insert command
Run Code Online (Sandbox Code Playgroud)

写这个的最佳表现方式是什么?

sql database sql-server insert upsert

564
推荐指数
11
解决办法
60万
查看次数

数据库是否会引发恶

数据库触发器是个坏主意吗?

根据我的经验,它们是邪恶的,因为它们可能导致令人惊讶的副作用,并且难以调试(特别是当一个触发器触发另一个触发器时).通常开发人员甚至不会考虑是否存在触发因素.

另一方面,似乎你必须FOO在数据库中创建一个新的逻辑,然后在数据库中创建一个新的最简单的地方是FOO表上的插入触发器.

我们唯一一次使用触发器就是设置简单的东西ModifiedDate.

sql triggers

181
推荐指数
12
解决办法
5万
查看次数

SQL Server是否提供类似MySQL的ON DUPLICATE KEY UPDATE

在MySQL中,如果指定ON DUPLICATE KEY UPDATE且插入的行将导致UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行的UPDATE.例如,如果列a声明为UNIQUE并包含值1,则以下两个语句具有相同的效果:

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

UPDATE table SET c=c+1 WHERE a=1;
Run Code Online (Sandbox Code Playgroud)

我不相信我在T-SQL中遇到过类似的东西.SQL Server是否提供了与MySQL的ON DUPLICATE KEY UPDATE相当的东西?

mysql t-sql sql-server

56
推荐指数
3
解决办法
5万
查看次数

带有WHERE子句的SQL Server INSERT INTO

我正在尝试使用此查询将一些模拟支付信息插入到dev数据库中:

INSERT
    INTO
        Payments(Amount)
    VALUES(12.33)
WHERE
    Payments.CustomerID = '145300';
Run Code Online (Sandbox Code Playgroud)

怎么能调整这个来执行?我也尝试过这样的事情:

IF NOT EXISTS(
    SELECT
        1
    FROM
        Payments
    WHERE
        Payments.CustomerID = '145300' 
) INSERT 
    INTO
        Payments(Amount)
    VALUES(12.33);
Run Code Online (Sandbox Code Playgroud)

sql t-sql database sql-server insert

4
推荐指数
1
解决办法
2万
查看次数

UPSERT多记录MSSQL

我目前有一个MySQL服务器,但目前正在迁移到MS SQL Server。

我试图在C#应用程序的表中每批插入很多(2000)或记录。我想复制MySQL的“ REPLACE INTO”(替换)(UPSERT),如果记录存在,我想更新它,如果记录不存在,我想插入它。我目前有一个这样的声明:

REPLACE INTO tablename (keycol, col1, col2)
VALUES ('A','B','C'),
       ('C','D','E'),
       ('F','G','H'),
       ('I','J','K');
Run Code Online (Sandbox Code Playgroud)

有些记录将存在,而另一些则不存在。另外,该语句将在许多不同的表上运行,并且值是在运行时构建的(通过动态循环遍历每个字段),因此在编译时表的结构未知。

我怀疑我是否可以有效地使用MERGE,因为该批次中的某些记录将存在而一些记录将不存在,并且由于我不知道事前的表格结构以及我正在更新批次的事实。 2000条记录,出于性能原因,我不想使用子查询。

最好的解决方案的任何帮助将不胜感激。

mysql sql-server merge upsert

2
推荐指数
2
解决办法
1130
查看次数

MERGE比简单的IF EXISTS有什么优势?

我想知道MERGE比简单地使用IF EXISTS有什么优势.建议的方法是哪种?MERGE是否执行更新和插入逐行匹配条件?如果是的话,它与游标类似吗?

sql-server sql-server-2008

1
推荐指数
1
解决办法
6752
查看次数

标签 统计

sql-server ×5

sql ×3

database ×2

insert ×2

mysql ×2

t-sql ×2

upsert ×2

merge ×1

sql-server-2008 ×1

triggers ×1