Richard Huxton <dev@xxxxxxxxxxxx> writes: > You might get somewhere with: > CREATE OR REPLACE FUNCTION testfunc(ct) RETURNS int AS > 'SELECT $1.foo;' > LANGUAGE SQL IMMUTABLE; > CREATE UNIQUE INDEX t1_b_uniq ON t1 (testfunc(b)); The point is that "attr.foo" is an expression, not a column name, and the SQL spec allows UNIQUE and PRIMARY KEY only on bare column names. I don't believe you need the function -- this should be enough: CREATE UNIQUE INDEX t1_b_uniq ON t1 ((attr.foo)); regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 1: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to majordomo@xxxxxxxxxxxxxx so that your message can get through to the mailing list cleanly