相关疑难解决方法(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万
查看次数

在SQL Server上插入更新存储过程

我已经编写了一个存储过程,如果存在记录将进行更新,否则它将进行插入.它看起来像这样:

update myTable set Col1=@col1, Col2=@col2 where ID=@ID
if @@rowcount = 0
insert into myTable (Col1, Col2) values (@col1, @col2)
Run Code Online (Sandbox Code Playgroud)

我以这种方式编写它的逻辑是更新将使用where子句执行隐式选择,如果返回0,则插入将发生.

这样做的替代方法是进行选择,然后根据返回的行数进行更新或插入.我认为这是低效的,因为如果要进行更新,将导致2次选择(第一次显式选择调用,第二次隐式更新位置).如果proc要进行插入,那么效率就没有差别.

我的逻辑声音在这里吗?这是如何将插入和更新组合到存储过程中的?

sql sql-server stored-procedures upsert

99
推荐指数
6
解决办法
5万
查看次数

插入数据,如果已插入,则在sql中更新

我只是想将数据插入到SQL数据库表中,如果已经插入了一些数据,那么我想更新该数据.我怎么能用Java做到这一点.请帮助我,并提前抱歉英语不好.

java sql

8
推荐指数
3
解决办法
1万
查看次数

带有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万
查看次数

标签 统计

sql ×4

sql-server ×3

database ×2

insert ×2

upsert ×2

java ×1

stored-procedures ×1

t-sql ×1