PegoraroF10 <marcos@xxxxxxxxxx> writes: > Adrian, on Firebird if you create a table or procedure with fields or params > declared with domains, they can be used with those domains or with their > base type. On Postgres I32 is not equal to integer. > create procedure myproc(id i32) returns(x i32) as ... > select * from myproc(cast(5 as integer)) -- works on firebird. On Postgres > it doesn´t because that procedure or function expects for a I32 and not a > integer. Really? regression=# create domain i32 as int; CREATE DOMAIN regression=# create function myproc(id i32) returns i32 language sql as 'select $1'; CREATE FUNCTION regression=# select myproc(cast(5 as integer)); myproc -------- 5 (1 row) I think the primary reason we don't allow domains over int for identity columns is that it's not clear how domain constraints ought to interact with the identity-value-generating behavior. regards, tom lane