У меня проблемы с установкой значения по умолчанию в базе данных Oracle.
Я хочу установить значение по умолчанию для моего региона NW: region CHAR(2) DEFAULT ('NW'),
У меня также есть проверка ссылок, чтобы убедиться, что все значения в регионе состоят из 2 символов:
CONSTRAINT check_region CHECK (region IN ('N', 'NW', 'NE', 'S', 'SE', 'SW', 'W', 'E')));
Однако я получаю эту ошибку, когда вставляю данные, которые не соответствуют моим ограничениям. У меня есть строка данных, которая имеет 'NULL'
для значения, поэтому оно не должно быть вставлено ... но это должно по умолчанию значение по умолчанию NW ... правильно?
Error starting at line : 16 in command -
INSERT into acctmanager
(amid, amfirst, amlast, amedate, amsal, amcomm, region) VALUES ('L500','MANDY','LOPEZ','01-OCT-09', 47000, 1500, 'NULL')
Error report -
ORA-02290: check constraint (SYS.CHECK_REGION) violated
Я понимаю, что ошибка должна появиться ... но должно ли значение не соответствовать значению, которое я определил в моей схеме для region
? Я пытался посмотреть здесь , но я все еще получаю сообщение об ошибке при вставке.
Есть предложения?
Вот мой полный оператор создания таблицы:
DROP TABLE ACCTMANAGER CASCADE CONSTRAINTS;
CREATE TABLE acctmanager
(amid CHAR(4),
amfirst VARCHAR2(12) NOT NULL,
amlast VARCHAR2(12) NOT NULL,
amedate DATE DEFAULT SYSDATE NOT NULL,
amsal NUMBER(8,2),
amcomm NUMBER(7,2),
region CHAR(4) DEFAULT ('NW'),
CONSTRAINT PK_acctmanager PRIMARY KEY (amid),
CONSTRAINT check_region CHECK (region IN ('N', 'NW', 'NE', 'S', 'SE', 'SW', 'W', 'E')));
INSERT into acctmanager
(amid, amfirst, amlast, amedate, amsal, amcomm, region) VALUES ('T500','NICK','TAYLOR','05-SEP-09', 42000, 3500, 'NE');
INSERT into acctmanager
(amid, amfirst, amlast, amedate, amsal, amcomm, region) VALUES ('L500','MANDY','LOPEZ','01-OCT-09', 47000, 1500, 'NULL');
INSERT into acctmanager
(amid, amfirst, amlast, amedate, amsal, amcomm, region) VALUES ('J500','SAMMIE','JONES','DEFAULT' , 39500, 2000, 'NW');