+ Examples for valid/invalid `on_conflict` targets
+
+ The following Spicepod is invalid because it specifies multiple `on_conflict` targets with `upsert`:
+
+ :::danger[Invalid]
+ ```yaml
+ datasets:
+ - from: spice.ai/eth.recent_blocks
+ name: eth.recent_blocks
+ acceleration:
+ enabled: true
+ engine: sqlite
+ primary_key: hash
+ indexes:
+ "(number, timestamp)": unique
+ on_conflict:
+ hash: upsert
+ "(number, timestamp)": upsert
+ ```
+ :::
+
+ The following Spicepod is valid because it specifies multiple `on_conflict` targets with `drop`, which is allowed:
+
+ :::tip[Valid]
+ ```yaml
+ datasets:
+ - from: spice.ai/eth.recent_blocks
+ name: eth.recent_blocks
+ acceleration:
+ enabled: true
+ engine: sqlite
+ primary_key: hash
+ indexes:
+ "(number, timestamp)": unique
+ on_conflict:
+ hash: drop
+ "(number, timestamp)": drop
+ ```
+ :::
+
+
+ The following Spicepod is invalid because it specifies multiple `on_conflict` targets with `upsert` and `drop`:
+
+ :::danger[Invalid]
+ ```yaml
+ datasets:
+ - from: spice.ai/eth.recent_blocks
+ name: eth.recent_blocks
+ acceleration:
+ enabled: true
+ engine: sqlite
+ primary_key: hash
+ indexes:
+ "(number, timestamp)": unique
+ on_conflict:
+ hash: upsert
+ "(number, timestamp)": drop
+ ```
+ :::
+
+
+
+
+- **DuckDB Limitations:**
+ - DuckDB does not support `upsert` for datasets with List or Map types.
+ - Standard indexes unexpectedly act like unique indexes and block updates when `upsert` is configured.
+ -