sql5 3.4.0

SQLite compatible database with CJK FTS5 full-text search
# sql5 v1.9 版本說明(規劃中)

## 版本資訊
- **版本**:1.9
- **日期**:2026-05-03
- **名稱**:TRIGGER 支援

## 新增功能

### 1. CREATE TRIGGER
```sql
CREATE TRIGGER trigger_name AFTER INSERT ON table_name
BEGIN
  INSERT INTO log_table VALUES (new.id);
END;
```

### 2. DROP TRIGGER
```sql
DROP TRIGGER trigger_name;
```

### 3. 行級觸發器
- BEFORE INSERT
- AFTER INSERT
- BEFORE UPDATE
- AFTER UPDATE
- BEFORE DELETE
- AFTER DELETE

### 4. 觸發器中的 NEW 和 OLD 引用
- `NEW.column` - 新插入/更新的值
- `OLD.column` - 舊值(UPDATE/DELETE)

### 5. 多語句觸發器
```sql
CREATE TRIGGER after_insert AFTER INSERT ON users
BEGIN
  INSERT INTO log (msg) VALUES ('new user added');
  UPDATE stats SET count = count + 1;
END;
```

## 使用方式

```sql
-- 建立日誌表
CREATE TABLE log (id INTEGER, action TEXT, ts TEXT);

-- 建立觸發器
CREATE TRIGGER after_user_insert AFTER INSERT ON users
BEGIN
  INSERT INTO log VALUES (NEW.id, 'INSERT', datetime('now'));
END;

-- 測試
INSERT INTO users (name) VALUES ('Alice');
-- 自動寫入 log 表
```

## 架構

```
┌─────────────────────────────────────────┐
│           Executor                       │
│  ┌─────────────────────────────────┐   │
│  │  Trigger Executor               │   │ ← 新增
│  │  - 解析觸發器主體               │   │
│  │  - 執行觸發 SQL                 │   │
│  └─────────────────────────────────┘   │
└─────────────────────────────────────────┘
```

## 實作重點

### TriggerMeta 結構
```rust
pub struct TriggerMeta {
    pub name: String,
    pub table: String,
    pub timing: TriggerTiming,  // BEFORE/AFTER
    pub event: TriggerEvent,      // INSERT/UPDATE/DELETE
    pub body: Vec<Statement>,    // 觸發器內的 SQL 語句
}
```

### 執行流程
1. INSERT/UPDATE/DELETE 時檢查是否有對應觸發器
2. 若有,在主語句執行前/後執行觸發器主體
3. 觸發器主體作為獨立語句執行

## 測試計畫

1. `CREATE TRIGGER basic` - 基本觸發器建立
2. `AFTER INSERT trigger` - 插入後觸發
3. `BEFORE DELETE trigger` - 刪除前觸發
4. `DROP TRIGGER` - 刪除觸發器
5. `NEW/OLD reference` - 引用新舊值

## 對應 SQLite 相容性

| SQLite 功能 | sql5 v1.9 狀態 |
|------------|---------------|
| DDL (CREATE/DROP TABLE) | ✅ 完成 |
| DML (INSERT/UPDATE/DELETE) | ✅ 完成 |
| SELECT with WHERE, JOIN | ✅ 完成 |
| Aggregate | ✅ 完成 |
| Transactions | ✅ 完成 |
| AUTOINCREMENT | ✅ 完成 |
| FOREIGN KEY | ✅ 完成 |
| FTS5 (CJK) | ✅ 完成 |
| CREATE/DROP INDEX | ✅ 完成 (v1.3) |
| PRAGMA | ✅ 完成 (v1.3) |
| ALTER TABLE | ✅ 完成 (v1.3) |
| EXPLAIN | ✅ 完成 (v1.3) |
| WAL Mode | ✅ 完成 (v1.4) |
| CREATE/DROP VIEW | ✅ 完成 (v1.5) |
| REINDEX | ✅ 完成 (v1.5) |
| ANALYZE | ✅ 完成 (v1.5) |
| sqlite_master | ✅ 完成 (v1.6) |
| UNION / UNION ALL | ✅ 完成 (v1.7) |
| 子查詢 (IN/EXISTS/Scalar) | ✅ 完成 (v1.7) |
| COUNT DISTINCT | ✅ 完成 (v1.7) |
| CHECK 約束 | ✅ 完成 (v1.8) |
| **CREATE/DROP TRIGGER** | ✅ 新增 (v1.9) |
| ATTACH | ❌ 待支援 |
| VACUUM | ❌ 待支援 |