SQL如何实现存在即更新,没有就插入
以前一直在用mysql,由于项目原因需要用SQL SERVER,今天遇到个问题就是SQL如何实现存在即更新,没有就插入。
我用mybatis写的:意思是就是判断category和position同时存在才更新,只有一个或都不存在就插入。但是我写的结果却是只要(category和positionID)其中一个存在,就把数据库中的所有有关的给跟新了,请问各位大侠有什么好的解决办法吗?
if exists (select * from T_Mobilie_BackstageCommon where category=#{category,jdbcType=VARCHAR} and positionId=#{positionId,jdbcType=INTEGER})
begin
update T_Mobilie_BackstageCommon set category=#{category,jdbcType=VARCHAR},pathStr=#{pathStr,jdbcType=VARCHAR},jumpToUrl=#{jumpToUrl,jdbcType=VARCHAR},title=#{title,jdbcType=VARCHAR},memo=#{memo,jdbcType=VARCHAR},expansion_one=#{expansion_one,jdbcType=VARCHAR},expansion_two=#{expansion_two,jdbcType=VARCHAR}
end
else
begin
insert into T_Mobilie_BackstageCommon(category, pathStr, jumpToUrl, title, needToLogin, positionId,memo, expansion_one, expansion_two)
values(#{category,jdbcType=VARCHAR}, #{pathStr,jdbcType=VARCHAR}, #{jumpToUrl,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, #{needToLogin,jdbcType=INTEGER}, #{positionId,jdbcType=INTEGER}, #{memo,jdbcType=VARCHAR}, #{expansion_one,jdbcType=VARCHAR}, #{expansion_two,jdbcType=VARCHAR})
end