表中的id列student是自動遞增的。我想將其設為非自動遞增。我可以知道,我如何修改以下查詢以使其正常作業?
DB::statement("ALTER TABLE student SET AUTO_INCREMENT=FALSE;");
上面的代碼顯示了以下錯誤。
Illuminate\Database\QueryException
SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "AUTO_INCREMENT"
LINE 1: ALTER TABLE student SET AUTO_INCREMENT=FALSE;
^ (SQL: ALTER TABLE student SET AUTO_INCREMENT=FALSE;)
uj5u.com熱心網友回復:
PostgreSQL 中的正確語法是:
ALTER TABLE student ALTER COLUMN id DROP DEFAULT;
id串行列在哪里。
您可能還想洗掉not null約束:
ALTER TABLE student ALTER COLUMN id DROP NOT NULL;
uj5u.com熱心網友回復:
這是為什么發布表定義 (ddl) 和 Postgres 版本至關重要的示例。如果 Postgres 版本早于版本 10,或者版本 10 或更高版本并且仍被定義為串行/大串行,@Zakaria 是正確的。但是,版本 10 及更高版本的首選定義是generated always as identity. 如果定義為身份,您需要:
alter table student alter column id drop identity.
我不會洗掉not null約束,如果它是 PK,它是沒有實際意義的,因為它會自動不為空。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/399529.html
標籤:拉拉维尔 数据库 PostgreSQL的 移民 laravel-8
上一篇:psycopg3中的UTF-8
下一篇:postgres別名總和
