如何将ID列数据类型整数更改为Hasura中的自动信息Integer

发布于 2025-01-23 13:51:14 字数 628 浏览 0 评论 0原文

我在hasura控制台中遇到了此错误:

{ "internal": { "statement": "ALTER TABLE users\nADD id Integer auto-increment;", "prepared": false, "error": { "exec_status": "FatalError", "hint": null, "message": "syntax error at or near \"auto\"", "status_code": "42601", "description": null }, "arguments": [] }, "path": "$[0]", "error": "query execution failed", "code": "postgres-error" }

检查了我的表后,我发现我不将ID列提供给整数(自动插入)数据类型现在ID列使用另一个表攻击,所以我无法删除它,所以我想要要将ID列更改为自动收入,我将Postgres数据库与Hasura和GraphQl一起使用,

这是我的ID

id - integer, primary key, unique, default: nextval('users_id_seq'::regclass)

I got this error in hasura console:

{ "internal": { "statement": "ALTER TABLE users\nADD id Integer auto-increment;", "prepared": false, "error": { "exec_status": "FatalError", "hint": null, "message": "syntax error at or near \"auto\"", "status_code": "42601", "description": null }, "arguments": [] }, "path": "$[0]", "error": "query execution failed", "code": "postgres-error" }

After checking my table, I find that I don't give the id column to the integer (auto-increment) datatype now id column is attack with another table so I can not delete it so I want to change id column to auto-increment and I use Postgres database with Hasura and graphql

This is my id look like

id - integer, primary key, unique, default: nextval('users_id_seq'::regclass)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

叫嚣ゝ 2025-01-30 13:51:15

如果您没有序列,则必须为表创建序列:

CREATE 
    SEQUENCE test_table_id_seq
    INCREMENT BY 1
    MINVALUE 1
    MAXVALUE 2147483647
    START 1
    CACHE 1
    NO CYCLE;

之后您可以将此序列添加到表格:

ALTER TABLE 
    test_table
ALTER COLUMN 
id SET DEFAULT nextval('test_table_id_seq'::regclass);

之后,您必须将序列值更新为max(id)(id)(id) of Table:

SELECT setval('test_table_id_seq', (SELECT MAX(id)+1 FROM test_table));

If you have not a SEQUENCE firstly you must create sequence for table:

CREATE 
    SEQUENCE test_table_id_seq
    INCREMENT BY 1
    MINVALUE 1
    MAXVALUE 2147483647
    START 1
    CACHE 1
    NO CYCLE;

After than you can add this sequence to your table:

ALTER TABLE 
    test_table
ALTER COLUMN 
id SET DEFAULT nextval('test_table_id_seq'::regclass);

After than, you must update your sequence value to max(id) of table:

SELECT setval('test_table_id_seq', (SELECT MAX(id)+1 FROM test_table));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文