| 4 | | || PostgreSQL || 18+ || 12+ || Yes (stored and virtual) || Emits `ALTER COLUMN ... SET NOT NULL`; fails if NULLs exist (confirmed on PG 18.6) || |
| 5 | | || SQLite || 3.31+ || 3.31+ || Yes || Table rebuild ignores null; no-op (confirmed) || |
| 6 | | || MariaDB || Yes || Yes || Historically no (to verify) || Likely error || |
| 7 | | || SQLite || 3.31+ || 3.31+ || Yes || Table rebuild; effectively a no-op || |
| 8 | | || Oracle || Yes || 23.7+ || Yes || Adds constraint; fails if NULLs exist || |
| | 4 | || PostgreSQL || 18+ || 12+ || `ALTER COLUMN ... SET NOT NULL`; fails if NULLs exist || |
| | 5 | || MySQL || Yes || Yes || `MODIFY` without the `AS` clause is read as converting to a plain column: stored fails on NULLs ("Data truncated"), virtual errors ("Changing the STORED status is not supported") || |
| | 6 | || MariaDB || Yes || Yes || Same `MODIFY`: stored fails on NULLs ("Data truncated"), virtual errors ("This is not yet supported for generated columns") || |
| | 7 | || SQLite || 3.31+ || 3.31+ || Table rebuild ignores null; no-op || |
| | 8 | || Oracle || Yes || 23.7+ || Not run yet || |