0
我想创建一个表值,该值大于0且可以为null。在SQL中创建一个具有空约束的表,但有约束
当我在该行中创建表列
CREATE TABLE Ship
(
SITE_ID INTEGER NOT NULL,
Ship_CATEGORY VARCHAR2(50) CHECK (WRECK_CATEGORY IN ('Military','Government','Passenger', 'Unknown', 'Commercial')),
Ship_TYPE VARCHAR2(100) ,
Ship_TONNAGE INTEGER CHECK ((WRECK_TONNAGE>0) AND WRECK_TONNAGE IS NULL) ,
Ship_CAUSE VARCHAR2(100) NULL CHECK (WRECK_CAUSE IN ('Fire', 'Collision','Unknown',' Deliberate', 'Explosion',' Attack', 'Other')),
Ship_DATESUNK DATE NULL,
Ship_CONDITION VARCHAR2(50) NULL CHECK (WRECK_CONDITION IN ('Excellent', 'Moderate','Poor', 'Very Poor')),
CONSTRAINT SHIPWRECK_PK PRIMARY KEY (SITE_ID)
);
的这样做 “Ship_TONNAGE INTEGER CHECK((WRECK_TONNAGE> 0)和WRECK_TONNAGE IS NULL)”, 当我插入空值以这一栏,它违反了约束。我如何创建我的表,因为它满足条件?而不是SHIP
CHECK ((WRECK_TONNAGE>0) or WRECK_TONNAGE IS NULL)
你的约束引用错列,沉船*:谢谢
错误报告: SQL错误:ORA-02290:检查约束(SYS_C00421597)违反 02290. 00000 - “检查约束违反(%s%S)。” *原因:插入的值不符合指定的检查 *操作:请勿插入违反约束的值。 –
是的,我编辑,但我仍然有错误,如上述的违反约束。 –
@BolorCh。 。 。它适用于SQL Fiddle(http://www.sqlfiddle.com/#!4/351d2/13)。 –