replace into sql是不是需要全列匹配
发布网友
发布时间:2022-04-13 09:18
我来回答
共1个回答
热心网友
时间:2022-04-13 10:47
以下是所用算法的更详细的说明(该算法也用于LOAD
DATA...REPLACE):
1.
尝试把新行插入到表中
2.
当因为对于主键或唯一关键字出现重复关键字错误而造成插入失败时:
a.
从表中删除含有重复关键字值的冲突行
b.
再次尝试把新行插入到表中
使用格式:
代码如下
复制代码
REPLACE
[LOW_PRIORITY
|
DELAYED]
[INTO]
tbl_name
[(col_name,...)]
VALUES
({expr
|
DEFAULT},...),(...),...
或:
REPLACE
[LOW_PRIORITY
|
DELAYED]
[INTO]
tbl_name
SET
col_name={expr
|
DEFAULT},
...
或:
REPLACE
[LOW_PRIORITY
|
DELAYED]
[INTO]
tbl_name
[(col_name,...)]
SELECT
...
id
是主键
测试方式一,插入索引值是一样的:
代码如下
复制代码
REPLACE
INTO
fanwe_order(id,sn)
VALUES(’33′,’测试replace
into
使用’)
结果:受影响的行数:2
SELECT
*
FROM
fanwe_order
WHERE
sn=’测试replace
into
使用’
结果:查出
一行记录
测试方式二,插入主键值是重复的:
将插入id指定为34。这样不与数据表中的id有重复现象,之后运行查询
REPLACE
INTO
fanwe_order(id,sn)
VALUES(’34′,’测试replace
into
使用’)
结果:没有新插入一条数据。还是替换了原来的那行。id从33变为34