Constraint

H2 SELECT NULLABLE 或其他等效項以檢查列是否具有 NOT NULL 約束

  • March 28, 2013

我想檢查列是否具有 NOT NULL 約束,以便開始自動升級表定義。但是在 H2 中,SQLSELECT NULLABLE FROM TABLE_NAME沒有返回 NOT NULL 列,而且我似乎沒有找到任何類似的東西來檢查表列上的約束。

請注意,我不想用類似的東西檢查 NOT NULL 列值SELECT COLUMN FROM TABLE WHERE COLUMN IS NOT NULL!我想檢查該特定列的表定義。

謝謝

如果你有這樣的定義:

create table foo 
(
  id integer not null
)

以下查詢將在is_nullable列中顯示“否”:

select table_name, 
      column_name,
      is_nullable
from information_schema.columns

如果該列具有檢查約束,如下所示:

create table foo
(
 id integer,
 constraint id_not_null check (id is not null)
);

那麼這將在第一個查詢中顯示為“可為空”。您需要檢查information_schema.constraints和分析CHECK_EXPRESSION列的內容以檢測到這一點。

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