Files
oceanbase/docs/docs-cn/7.developer-guide-1/3.about-dml-statements-and-transactions/1.about-dml-statements/5.replace-into-statements.md
2022-02-10 14:51:49 +08:00

1.4 KiB

关于 REPLACE INTO 语句

REPLACE INTO 语句会判断行记录是否存在(根据主键索引或唯一索引判断)。如果不存在,则插入记录;如果存在,则删除已有记录,并插入新行记录。目标表建议有主键或者唯一索引,否则容易插入重复的记录。

示例如下:

obclient> CREATE TABLE t_replace(
     id number NOT NULL PRIMARY KEY
     , name varchar(10) NOT NULL
     , value number
     ,gmt_create timestamp NOT NULL DEFAULT current_timestamp
 );
Query OK, 0 rows affected (0.06 sec)

obclient> REPLACE INTO t_replace values(1,'CN',2001, current_timestamp ());
Query OK, 1 row affected (0.00 sec)

obclient> REPLACE INTO t_replace
     SELECT id,name,value,gmt_create  FROM t_insert;
Query OK, 5 rows affected (0.00 sec)
Records: 4  Duplicates: 1  Warnings: 0

obclient> REPLACE INTO t_replace(id, name, value)  values(6,'DE',20006);
Query OK, 1 row affected (0.01 sec)

obclient> select * from t_replace;
+----+------+-------+---------------------+
| id | name | value | gmt_create          |
+----+------+-------+---------------------+
|  1 | CN   | 10002 | 2020-04-03 18:05:45 |
|  2 | US   | 10103 | 2020-04-03 18:05:54 |
|  3 | UK   | 10003 | 2020-04-03 18:05:54 |
|  4 | JP   | 10005 | 2020-04-03 18:06:08 |
|  6 | DE   | 20006 | 2020-04-03 18:09:19 |
+----+------+-------+---------------------+
5 rows in set (0.01 sec)