oracle 触发器 upsert,数据库管理员

UPSERT-MERGE或@@ rowcount是否有更好的替代方法?[关闭]

很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我想知道您是否遇到过类似于UPSERT概念的T-SQL命令?使用选项(1)或(2)执行INSERT | UPDATE操作似乎过于复杂且容易出错。 目的 为了确保所需的记录(在本例中为employee_id 1)是最新的,而不必本质上两次写入相同的查询。 语境 表名:员工 员工编号:具有主键,并且身份属性设置为true 选项 执行SQL UPDATE ...检查@@ rowcount = 0和@@ error = 0 ...根据需要执行SQL INSERT 缺点:您实际上必须两次编写相同的查询,一次作为插入,一次作为更新 缺点:更多的代码=更多的输入时间 缺点:更多代码=更多错误空间 /programming/1106717/how-to-implement-a-conditional-upsert-stored-procedure “使用@@ rowcount更新” 执行一个SQL MERGE 缺点:您实际上必须两次编写相同的查询,一次作为插入,一次作为更新 缺点:更多的代码=更多的输入时间 缺点:更多代码=更多错误空间 http://technet.microsoft.com/zh-cn/library/bb510625.aspx “ T-SQL合并” 执行SQL UPSERT(功能不存在) 专家:您一次定义了数据与表的关系(让SQL Server担心它是INSERT还是UPDATE) 优点:更少的代码=更快的实现 优点:更少的代码=更低的概率 UPSERT示例 UPSERT雇员(employee_id,employee_number,job_title,first_name,middle_name,sname,modified_at)VALUES(1,'00 -124AB37','Manager','John','T','Smith',GetDate()); 如果employee_id 1不存在:MS SQL执行INSERT语句 …

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值