2020年10月27日 / 10次阅读 / 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
Ctrl+D 收藏本页
©Copyright 麦新杰 Since 2019 Python笔记