Rod Taylor <[EMAIL PROTECTED]> writes: > > Hm. So you're saying there are only ever exactly two types of defaults. The > > "initial" default that applies to all tuples that were created before the > > column was added. And the "current" default that only ever applies to newly > > created tuples. > > > > That does seem to cleanly close this hole. > > I don't think so. > > ALTER TABLE tab ADD foo integer DEFAULT 1; > INSERT INTO tab DEFAULT VALUES;
This inserts a physical "1" in the record (the "current" default"). > ALTER TABLE tab ALTER foo SET DEFAULT 2 > INSERT INTO tab DEFAULT VALUES; This inserts a physical "2" in the record. > ALTER TABLE tab ALTER foo SET DEFAULT 3 > INSERT INTO tab DEFAULT VALUES; This inserts a physical "3" in the record. > SELECT foo FROM tab; This checks for any old records that predate the column and use the "initial" default of 1 for those records. The three records above all postdate the column addition so they have values present, namely 1, 2, and 3. -- greg ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings