Sql 有没有办法解决这个约束问题?
我正在尝试更新对象,但出现以下错误:Sql 有没有办法解决这个约束问题?,sql,oracle,Sql,Oracle,我正在尝试更新对象,但出现以下错误: SQL Error: 2290, SQLState: 23000 2020-11-26 09:05:18.187 ERROR 6395 --- [ XNIO-1 task-62] o.h.engine.jdbc.spi.SqlExceptionHelper : ORA-02290: check constraint (T_MATRICULE) violated 2020-11-26 09:05:18.187 ERROR 6395 --- [ XN
SQL Error: 2290, SQLState: 23000
2020-11-26 09:05:18.187 ERROR 6395 ---
[ XNIO-1 task-62] o.h.engine.jdbc.spi.SqlExceptionHelper :
ORA-02290: check constraint (T_MATRICULE) violated
2020-11-26 09:05:18.187 ERROR 6395 ---
[ XNIO-1 task-62] o.h.i.ExceptionMapperStandardImpl :
HHH000346: Error during managed flush
[org.hibernate.exception.ConstraintViolationException: could not execute statement]
这:
ORA-02290:违反检查约束(T_矩阵)
表示列上有一个检查约束,该约束被违反。您应该检查约束并。。。嗯,在更新该列时不要违反它
例如,可能是该列允许值
1
(表示“开”)和0
(表示“关”),并且您试图在一个表中将其更新为2
,检查约束被违反
可以使用以下查询检查约束定义:
SELECT * FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME = 'T_MATRICULE';
尽量避免根据CHECK
constraint validation插入/更新值。我有一个空值约束,因此如果我希望此外键为空值,如何更新我的值?如果您希望允许该列为空值,请删除检查约束。如果它(一列)在创建表时被简单地设置为NOTNULL(从而进行隐式检查约束),那么altertable your\u table modify column\u name NULL代码>但由于它是外键,我可以将其设置为null吗?是的,没有问题。外键约束确保您不能插入无效值(在引用的表/列中不存在),但可以将其保留为空(即NULL)。