这对我来说不是明显的。SELECT MAX("SequenceNumber") FROM "TrackingEvent";SELECT nextval(pg_get_serial_sequence("TrackingEvent", "SequenceNumber")) AS NextId
它返回一个错误,上面写着这不仅是<em
现在,我想要的是在运行INSERT语句之后得到最后插入的id。此时此刻,我所有的尝试都没有结果(顺便说一句,我在MySQL中得到了完全相同的行为,只有在SQLite中一切正常)。这是一些代码,它再现了这种意想不到的行为:>>> cnx = psycopg2.connect(host="127.0.0.1", dbname="reestr>> cur.execute("INSERT INTO te
Postgres 10提供了SQL标准GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY特性的实现,该特性松散地称为身份列。这个特性取代了Postgres自己的SERIAL伪类型,消除了它的问题/问题。有关更多信息,请参见这里和这里。
GENERATED…优于SERIAL的主要原因之一是在后台透明地处理序列号生成器。我们可以添加列、调整当前序列号和删除列,所有这些都不需要显式地引用序列。IDENTITY IF EXIST