我有一个现有的表,我想在表中添加一个表级CHECK
约束。
在PostgreSQL中,以下内容有效:
ALTER TABLE mytable
ADD CONSTRAINT myconstraint
CHECK a != b
在SQLite中,以下内容有效:
ALTER TABLE mytable
ADD myconstraint
CHECK a != b
然而,SQLite版本并不适用于PostgreSQL,反之亦然;它们因语法错误而失败。这样做的语法是否兼容?
我正在使用PostgreSQL 9.6.1和SQLite 3.14.0。
答案 0 :(得分:1)
SQLite命令添加一个名为myconstraint
的列,没有数据类型,列约束为CHECK a != b
(需要括号才有效)。
SQLite的ALTER TABLE无法添加表约束。 (alternative的便携性更低。)
答案 1 :(得分:0)
我认为使用alter table add <constraint>
并不常见。一个数据库需要关键字constraint
,另一个数据库不允许。
您可以将此作为基于列的约束吗?两个数据库都接受:
create table t (
x int check (x > 0)
);
您应该能够更改现有列或添加具有类似语法的新列。