So I was wondering what if I mix some serial with some identity. So I executed such simple query:
CREATE TABLE foo(
id SERIAL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY
);
Of course, I got an error:
ERROR: both default and identity specified for column "id" of table "foo"
SQL state: 42601
“SQL state: 42601” stands for a syntax error. But the interesting thing is that SERIAL, as you know, converted to CREATE SEQUENCE and SET DEFAULT.
So now I know what exactly the reason of error. You cannot have both DEFAULT and IDENTITY for a column.