ORA-02290: проверка ограничения нарушена - PullRequest
1 голос
/ 22 апреля 2020

Я получаю сообщение «ORA-02290: проверка ограничения нарушена» всякий раз, когда я пытаюсь вставить значения в свою таблицу.

Вот код для таблицы STORE:

    CREATE TABLE STORE
    (
    StoreID INT PRIMARY KEY,
    StoreName VARCHAR2(30) NOT NULL,
    City VARCHAR2(30) NOT NULL,
    Country VARCHAR2(30) NOT NULL CHECK (Country IN('Singapore','India','United States','Peru','Phillippines','People''s Republic of China','Canada')),
    Phone VARCHAR2(30) NOT NULL,
    Fax VARCHAR2(30),
    Email VARCHAR2(50) UNIQUE,
    Contact VARCHAR2(30) NOT NULL,
    UNIQUE (StoreName, City)
    );

А вот операторы INSERT, которые я пытаюсь выполнить sh:

    INSERT INTO STORE(StoreID, StoreName, City, Country, Phone, Fax, Email, Contact)
    VALUES (1, 'Eastern Sales', 'Singapore', 'Singapore', '65-543-1233', '65-543-1239', 'Sales@EasternSales.com.sg', 'Jeremy');

    INSERT INTO STORE(StoreID, StoreName, City, Country, Phone, Fax, Email, Contact)
    VALUES (2, 'Eastern Treasures', 'Manila', 'Philippines', '63-2-654-2344', '63-2-654-2349', 'Sales@EasternTreasures.com.ph', 'Gracielle');

    INSERT INTO STORE(StoreID, StoreName, City, Country, Phone, Fax, Email, Contact)   
    VALUES (3, 'Jade Antiques', 'Singapore', 'Singapore', '65-543-3455', '95-543-3459', 'Sales@JadeAntiques.com.sg', 'Swee Lai');

    INSERT INTO STORE(StoreID, StoreName, City, Country, Phone, Fax, Email, Contact)    
    VALUES (4, 'Andes Treasures', 'Lima', 'Peru', '51-14-765-4566', '51-14-765-4569', 'Sales@AndesTreasures.com.pe', 'Juan Carlos');

    INSERT INTO STORE(StoreID, StoreName, City, Country, Phone, Fax, Email, Contact)    
    VALUES (5, 'Eastern Sales', 'Hong Kong', 'People''s Republic of China', '852-876-5677', '852-876-5679', 'Sales@EasternSales.com.hk', 'Sam');

    INSERT INTO STORE(StoreID, StoreName, City, Country, Phone, Fax, Email, Contact)
    VALUES (6, 'Eastern Treasures', 'New Delhi', 'India', '91-11-987-6788', '91-11-987-6789', 'Sales@EasternTreasures.com.in', 'Deepinder');

    INSERT INTO STORE(StoreID, StoreName, City, Country, Phone, Fax, Email, Contact)    
    VALUES (7, 'European Imports', 'New York City', 'United States', '800-432-8766', '800-432-8769', 'Sales@EuropeanImports.com.sg', 'Marcello');

Он создал 4-е, 6-е и 7-е значения, но не остальные. Что не так?

1 Ответ

1 голос
/ 22 апреля 2020

Вы нарушаете ограничение CHECK, так как допустимые значения не соответствуют значению, которое вы пытаетесь вставить:

CHECK (Country IN ('Singapore', 'India', «Соединенные Штаты», «Перу», «Филиппины», «Народная Республика c Китая», «Канада»))

ЦЕННОСТИ (2, «Восточные сокровища», «Манила», 'Филиппины', '63 -2-654-2344 ', '63 -2-654-2349', 'Sales@EasternTreasures.com.ph', 'Gracielle')

'Phillippines' в ограничении не соответствует 'Philippines' в операторе вставки.

Исправьте название страны в ограничении CHECK на 'Philippines', и оно будет работать нормально:

CREATE TABLE STORE
    (
    StoreID INT PRIMARY KEY,
    StoreName VARCHAR2(30) NOT NULL,
    City VARCHAR2(30) NOT NULL,
    Country VARCHAR2(30) NOT NULL 
      CHECK (Country IN(
        'Singapore','India','United States','Peru','Philippines','People''s Republic of China','Canada')),
    Phone VARCHAR2(30) NOT NULL,
    Fax VARCHAR2(30),
    Email VARCHAR2(50) UNIQUE,
    Contact VARCHAR2(30) NOT NULL,
    UNIQUE (StoreName, City)
    );
...