TypeORM 处理 Postgres 之外的 createdAt 和 updatedAt 列。当您使用 TypeORM 插入数据时,它会将值注入这些列。
由于 Hasura 直接与 Postgres 对话,Postgres 和 Hasura 都不知道应该更新这些列。
您应该为该列设置默认值now()
并为该created_at
列设置一个触发器updated_at
:
CREATE TABLE "public"."test_table" (
"id" serial NOT NULL,
"created_at" timestamptz NOT NULL DEFAULT now(),
"updated_at" timestamptz NOT NULL DEFAULT now(),
PRIMARY KEY ("id")
);
CREATE OR REPLACE FUNCTION "public"."set_current_timestamp_updated_at"() RETURNS TRIGGER AS $$
DECLARE _new record;
BEGIN _new := NEW;
_new."updated_at" = NOW();
RETURN _new; END;
$$ LANGUAGE PLPGSQL;
CREATE TRIGGER "set_public_time_updated_at" BEFORE UPDATE ON "public"."test_table" FOR EACH ROW EXECUTE PROCEDURE "public"."set_current_timestamp_updated_at"();
COMMENT ON TRIGGER "set_public_time_updated_at" ON "public"."test_table" IS 'trigger to set value of column "updated_at" to current timestamp on row update';
无论您如何联系 Postgres,这都会更新列。