Я работаю над проектом для Uni, и у меня мало знаний или опыта работы с базами данных.Я пытаюсь создать базу данных в Oracle с таблицей, которая содержит изготовленные детали, которые могут быть двух типов, скажем, 1 и 2. Когда деталь имеет тип 1, я буду хранить в таблице ее местоположение, когда она будет иметь тип 2 Iбудет хранить в той же таблице время выполнения.Таким образом, у меня будут нулевые значения для другого столбца в обоих случаях (я знаю о проблемах с нулевыми значениями, но подумав об этом и выяснив, как лучше всего с этим справиться, я решил сделать это так,так как у меня только небольшое количество атрибутов).Моя проблема в ПРОВЕРКЕ ПРОВЕРКИ.Я попытался сделать это следующим образом:
CREATE TABLE manufactured (
PID INT NOT NULL,
PARTTYPE NUMBER (1) NOT NULL,
CHECK (PARTTYPE IN (1,2)),
CONSTRAINT REFMAN FOREIGN KEY (PID, PARTTYPE) REFERENCES PART (PID, PARTTYPE),
LOCATION VARCHAR (50),
CONSTRAINT LOC CHECK (PARTTYPE=1 AND LOCATION IS NOT NULL),
CONSTRAINT LOC2 CHECK(PARTTYPE=2 AND LOCATION IS NULL),
LEAD_TIME VARCHAR (50),
CONSTRAINT LEADTIME CHECK (PARTTYPE=2 AND LEAD_TIME IS NOT NULL),
CONSTRAINT LEADTIME2 CHECK (PARTTYPE=1 AND LEAD_TIME IS NULL),
CONSTRAINT PK_MAN PRIMARY KEY (PID));
Это не работает.
Я попытался вставить запись следующим образом:
insert into manufactured(PID, PARTTYPE, LOCATION) values(101,1,'Warehouse1');
И я получаюошибка: ORA-02290: проверка ограничения (*****. LEADTIME) нарушена
Я также попытался:
insert into manufactured values (101,1,'Warehouse1');
И я получаю ошибку:
ORA-00947: недостаточно значений
И, наконец, с этим:
insert into manufactured(PID, PARTTYPE, LEAD_TIME) VALUES (102, 2, '2 WEEKS');
Я получаю следующую ошибку: ORA-02290: проверка ограничения (****. LEADTIME2) нарушена
Заранее благодарю за помощь.