Postgresql

什麼約束不能寫成表約束?

  • February 22, 2022

我正在閱讀 Postgres 7.3文件以向 PostgreSQL 表添加約束。

它說:

要添加不能寫為表約束的非空約束,請使用以下語法:

ALTER TABLE 產品 ALTER COLUMN product_no SET NOT NULL;

約束會被立即檢查,所以表數據必須滿足約束才能添加。

我不明白*“不能寫成表約束”是*什麼意思?

什麼是表約束?什麼約束不立即檢查?

這只是語法問題。

列約束定義如下

CREATE TABLE ... (
  col type [CONSTRAINT name] constraint_definition,
  ...
);

而表約束看起來像

CREATE TABLE ... (
  col type,
  [CONSTRAINT name] constraint_definition,
  ...
);

在這兩種情況下,產生的約束是相同的。

所以文件說你需要NOT NULL在列定義中寫,你不能在其他任何地方寫。

引用自:https://dba.stackexchange.com/questions/307791