Не удается вставить значение типа int в десятичный столбец SQL - PullRequest
0 голосов
/ 28 февраля 2019

В настоящее время работаю над школьным проектом.

Я пытаюсь создать следующую таблицу:

CREATE TABLE Purchase (
ID INT NOT NULL,
Type INT DEFAULT 3 NOT NULL,
Price DECIMAL(5,5) NOT NULL,
CONSTRAINT check_3 CHECK (TYPE = 3),
CONSTRAINT price_check CHECK (Cost>0),
CONSTRAINT pk_1 PRIMARY KEY (ID),
CONSTRAINT fk_1 FOREIGN KEY (ID,Type) REFERENCES Part(ID,Type));

Моя проблема заключается в том, что я пытаюсь вставить значения в этот столбец.Когда я пытаюсь сделать это:

INSERT INTO Purchase VALUES (12, 3, 200);

я получаю следующую ошибку:

SQL> INSERT INTO Purchase VALUES (12, 3, 200);
INSERT INTO Purchase VALUES (12, 3, 200)
                                       *
ERROR at line 1:
ORA-01438: value larger than specified precision allowed for this column

Я не понимаю, что я делаю неправильно.Не могу ли я добавить целые числа в десятичный столбец?Это проблема?Не имеет особого смысла для меня.

Спасибо, что нашли время, чтобы прочитать это!

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

DECIMAL (5,5) означает, что вы получите место для 5 числа после запятой (5 из 5).Пожалуйста, попробуйте создать свою таблицу так: DECIMAL (10,5)

0 голосов
/ 28 февраля 2019

Во-первых, всегда перечисляйте столбцы для insert:

INSERT INTO Purchase (id, type, price)
    VALUES (12, 3, 200);

Во-вторых, ваша цена объявляется как DECIMAL(5, 5).Это означает, что цены варьируются от 0,00000 до 0,99999.

Предположительно, вам нужен более широкий диапазон.Я не знаю, что это такое, но DECIMAL(10, 5) решит вашу проблему.В целом, просто NUMBER решает вашу проблему в Oracle.

...