> Bruce Momjian <maillist@candle.pha.pa.us> writes:
> > test=> create table test (x int, y serial);
> > CREATE
> > test=> insert into test values (100, null);
> > ERROR: ExecAppend: Fail to add null value in not null attribute y
>
> gram.y thinks SERIAL is defined to mean NOT NULL:
>
> | ColId SERIAL ColPrimaryKey
> {
> ColumnDef *n = makeNode(ColumnDef);
> n->colname = $1;
> n->typename = makeNode(TypeName);
> n->typename->name = xlateSqlType("integer");
> n->raw_default = NULL;
> n->cooked_default = NULL;
> =================> n->is_not_null = TRUE;
> n->is_sequence = TRUE;
> n->constraints = $3;
>
> $$ = (Node *)n;
> }
>
> Offhand I don't see any fundamental reason why serial columns should
> be restricted to be nonnull, but evidently someone did at some point.
The actual null is not the issue. The issue is that if we have a
SERIAL column, and we try to put a NULL in there, shouldn't it put the
default sequence number in there?
-- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610)
853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill,
Pennsylvania19026