https://artifacts.duckdb.org/latest/duckdb-binaries-linux-arm64.zip1.insert 一个表时在另一个表记录C:\dduckdb160d DuckDB v1.6.0-dev6049(Development Version,c7a9c8fe3b)Enter.helpforusagehints.memory DCREATETABLEhas_own_trigger(idINTEGER);memory DCREATETABLEhas_own_trigger_log(msgVARCHAR);memory DCREATETRIGGERtrg_on_otherAFTERINSERTONhas_own_triggerFOREACH STATEMENTINSERTINTOhas_own_trigger_logVALUES(fired);memory Dinsertintohas_own_triggerselect1;memory Dfromhas_own_trigger_log;┌─────────┐ │ msg │ │varchar│ ├─────────┤ │ fired │ └─────────┘今天的提交https://github.com/duckdb/duckdb/actions/runs/272637164322.插入一个表在本表做merge操作匹配的更新不存在的插入:\dduckdbtrig DuckDB v1.6.0-dev8433(Development Version,ccd47e30f9)Enter.helpforusagehints.memory DCREATETABLEpeople(idINTEGER,nameVARCHAR,salaryFLOAT);memory DCREATETRIGGERinsert_afterAFTERINSERTONpeopleFOREACH STATEMENTMERGEINTOpeopleUSING(SELECTunnest([3,1])ASid,unnest([Sarah,John])ASname,unnest([95_000.0,105_000.0])ASsalary)ASupsertsON(upserts.idpeople.id)WHENMATCHEDTHENUPDATEWHENNOTMATCHEDTHENINSERT;memory DINSERTINTOpeopleVALUES(1,John,92_000.0),(2,Anna,100_000.0);memory Dfrompeople;┌───────┬─────────┬──────────┐ │ id │ name │ salary │ │ int32 │varchar│float│ ├───────┼─────────┼──────────┤ │1│ John │105000.0│ │2│ Anna │100000.0│ │3│ Sarah │95000.0│ └───────┴─────────┴──────────┘
DuckDB 1.6dev新功能:触发器
https://artifacts.duckdb.org/latest/duckdb-binaries-linux-arm64.zip1.insert 一个表时在另一个表记录C:\dduckdb160d DuckDB v1.6.0-dev6049(Development Version,c7a9c8fe3b)Enter.helpforusagehints.memory DCREATETABLEhas_own_trigger(idINTEGER);memory DCREATETABLEhas_own_trigger_log(msgVARCHAR);memory DCREATETRIGGERtrg_on_otherAFTERINSERTONhas_own_triggerFOREACH STATEMENTINSERTINTOhas_own_trigger_logVALUES(fired);memory Dinsertintohas_own_triggerselect1;memory Dfromhas_own_trigger_log;┌─────────┐ │ msg │ │varchar│ ├─────────┤ │ fired │ └─────────┘今天的提交https://github.com/duckdb/duckdb/actions/runs/272637164322.插入一个表在本表做merge操作匹配的更新不存在的插入:\dduckdbtrig DuckDB v1.6.0-dev8433(Development Version,ccd47e30f9)Enter.helpforusagehints.memory DCREATETABLEpeople(idINTEGER,nameVARCHAR,salaryFLOAT);memory DCREATETRIGGERinsert_afterAFTERINSERTONpeopleFOREACH STATEMENTMERGEINTOpeopleUSING(SELECTunnest([3,1])ASid,unnest([Sarah,John])ASname,unnest([95_000.0,105_000.0])ASsalary)ASupsertsON(upserts.idpeople.id)WHENMATCHEDTHENUPDATEWHENNOTMATCHEDTHENINSERT;memory DINSERTINTOpeopleVALUES(1,John,92_000.0),(2,Anna,100_000.0);memory Dfrompeople;┌───────┬─────────┬──────────┐ │ id │ name │ salary │ │ int32 │varchar│float│ ├───────┼─────────┼──────────┤ │1│ John │105000.0│ │2│ Anna │100000.0│ │3│ Sarah │95000.0│ └───────┴─────────┴──────────┘