目前正在做一个学校项目。
我正在尝试创建下表:
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
我不明白我做错了什么。我不能将整数添加到小数列吗?那是问题所在吗?对我来说意义不大。
感谢您花时间阅读本文!
最佳答案
首先,始终列出插入
的列:
INSERT INTO Purchase (id, type, price)
VALUES (12, 3, 200);
其次,您的价格声明为 DECIMAL(5, 5)
。这意味着价格范围从 0.00000 到 0.99999。
据推测,您想要更广泛的范围。我不知道那是什么,但是 DECIMAL(10, 5)
可以解决您的问题。更一般地说,只需 NUMBER
即可解决您在 Oracle 中的问题。
关于sql - 无法在小数列 SQL 中插入 int 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54929540/