CHECK and DEFAULT: rules and initial values
Prevent negative stock and define what happens when quantity is omitted. Explicitly distinguish zero, an omitted column and NULL.
DEFAULT supplies a value when a column is omitted on insert; it does not replace an explicit NULL. CHECK tests a condition, but NULL is not failure in SQLite. Add NOT NULL when a value is required.