WHEN MATCHED THEN
时间: 2024-09-11 11:00:52 浏览: 44
WHEN MATCHED THEN 是SQL数据库中的一个更新规则,它通常用于Oracle GoldenGate、Microsoft SQL Server等数据同步工具的数据变更跟踪(Data Change Tracking, DCT)或事务复制功能中。这个语句用于条件式地决定如何处理匹配到的数据行,当源表(source table)中的记录与目标表(target table)中的记录相匹配时。
例如,在DML(Data Manipulation Language)操作如UPDATE时,WHEN MATCHED THEN 子句可以让你选择执行特定操作,比如:
1. UPDATE:如果匹配,则应用指定的新值。
```sql
WHEN MATCHED THEN
UPDATE SET column1 = value1, column2 = value2;
```
2. DELETE:如果匹配,则从目标表中删除该行。
```sql
WHEN MATCHED THEN
DELETE;
```
3. NO ACTION 或 NULLIFY:保持不变或置空,不做任何改动。
```sql
WHEN MATCHED THEN
NO ACTION;
WHEN MATCHED THEN
NULLIFY;
```
相关问题
WHEN MATCHED THEN
WHEN MATCHED是SQL Server中的一个DML (Data Manipulation Language) 规则,它通常用于事务性数据集成工具如Merge操作。`WHEN MATCHED`子句是在`MERGE`命令中使用的,用于指定当源表中的行与目标表中的已有行匹配时应采取的操作。
在这个上下文中,`THEN`关键字后面跟随的是针对匹配行的更新策略。例如:
```sql
MERGE TargetTable
USING SourceTable
ON TargetTable.Key = SourceTable.Key
WHEN MATCHED THEN
UPDATE SET
TargetTable.Column1 = SourceTable.Column1,
TargetTable.Column2 = SourceTable.Column2;
```
这个例子表示如果目标表中有与源表中某一行的关键字相匹配的记录,那么就更新`Column1`和`Column2`字段的值。如果不匹配,则可以添加其他条件,比如`WHEN NOT MATCHED BY TARGET THEN INSERT`来插入新的记录。
when matched then update
在 Oracle 数据库的 `MERGE` 语句中,`WHEN MATCHED THEN UPDATE` 子句是一个条件语句,用于处理当目标表(即你想要更新的表)中存在与源表(提供更新数据的表)相匹配的行时的情况。这个部分告诉 Oracle 应该采取哪些操作。
具体语法如下:
```sql
MERGE INTO target_table TGT
USING source_table SRC
ON (TGT.key_column = SRC.key_column) -- 定义关联条件
WHEN MATCHED THEN
-- 如果目标表有匹配项,则执行以下更新操作
UPDATE SET TGT.column1 = SRC.column1, TGT.column2 = SRC.column2; -- 更新字段
```
在这个例子中,`TGT.key_column` 和 `SRC.key_column` 需要是相同的列,用于确定哪一行应该被匹配。`SET` 后面列出的是要更新的目标表中的字段,以及其对应的源表字段值。
如果不包含 `WHEN MATCHED THEN`,`MERGE` 将默认是 `WHEN NOT MATCHED THEN INSERT`,也就是如果没有找到匹配的行,会进行插入操作。`WHEN MATCHED THEN DELETE` 或其他条件也可以根据需求设置。
阅读全文