REPLACE语句的应用

2020年10月27日 / 7次阅读 / Last Modified 2020年11月3日
SQLite

从应用程序的角度看,SQL语言中的REPLACE语句是非常有实用价值的,因为很多时候,一张table里的数据,你不知道哪一个会先到,哪一个后到,也有可能相同位置的数据会来很多次。

此时用replace语句是最明智的选择,代码会比较简单。replace into的含义,即如果row存在就update,如果row不存在就insert。

能不能用replace,要看table的设计,因为区分row需要primary key。如果是明确更新某一行,有primary key在手,可以replace,没有的话,就要先查询primary key,然后再replace。有的时候,查询后用update,语义可能更清晰一些。有的时候,没有primary key,但是有一个数据是unique的,直接update后跟where更简单吧。

需要注意的是,table需要至少有一个有unique约束的column来给replace into语句定位。否则,就是无脑insert。在有unique约束的table中insert,可能出Error,而用replace,就不会出Error,直接干!

sqlite> create table t3(id integer primary key, sn int, content text);
sqlite> insert into t3(id,sn,content) values (null,1,'a');
sqlite> insert into t3(id,sn,content) values (null,2,'b');
sqlite> insert into t3(id,sn,content) values (null,3,'c');
sqlite> select * from t3;
id  sn  content
--  --  -------
1   1   a
2   2   b
3   3   c
sqlite> replace into t3(id,sn,content) values (1,10,'aa');
sqlite> replace into t3(id,sn,content) values (2,20,'bb');
sqlite> replace into t3(id,sn,content) values (3,30,'cc');
sqlite> select * from t3;
id  sn  content
--  --  -------
1   10  aa
2   20  bb
3   30  cc

-- EOF --

本文链接:https://www.pynote.net/archives/2665

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top