我正在创建一个新表,像这样:
<createTable tableName="myTable">
<column name="key" type="int" autoIncrement="true">
<constraints primaryKey="true" primaryKeyName="PK_myTable" nullable="false"/>
</column>
<column name="name" type="nvarchar(40)">
<constraints nullable="false"/>
</column>
<column name="description" type="nvarchar(100)">
<constraints nullable="true"/>
</column>
</createTable>
就nullable
约束而言,如果我省略该属性,默认设置是什么?
。如果我只这样做:
<column name="description" type="nvarchar(100)"/>
…列可以为空吗?
更重要的是,指定这个的文档在哪里(因为我有其他类似的问题)?
我看这里:liququibase Column标签,但它只含糊地说:
nullable -列是否为空?
没有文档记录,但我查看了源代码,似乎如果不指定,就不会向列添加约束。您可以自己检查这一点的一种方法是使用liquidbase updateSql
命令查看生成的SQL。
实际上这里有文档。
定义列是否可为空。默认值:database-dependent
所以默认的null约束是依赖于数据库的。例如,如果您使用Postgres,默认情况下它将是可空的。
https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-not-null-constraint/对列使用NOT NULL约束来强制列不接受NULL。默认为NULL