sql - 错误:该列允许的值大于指定的精度
问题描述
我正在基于 SQL Developer 创建表,但是,我的代码出现了几个问题:
我的表可以一一建立,但不能整体运行,报错:
ORA-00922: 缺少或无效选项
当我尝试插入值时,出现错误:
ORA-01438: 该列允许的值大于指定的精度
我不知道这两个错误是如何产生的,我的代码看起来一切正常。
create table FACULTY (
faculty_id VARCHAR(25),
fac_name VARCHAR(25),
office VARCHAR(25),
salary NUMBER(9,2),
primary key (faculty_id)
)
create table student (
student_id VARCHAR(25),
std_name VARCHAR(25),
home_phone CHAR(12),
total_credits NUMBER,
gpa NUMBER(1,2),
advisor_id VARCHAR(25),
PRIMARY KEY (student_id),
foreign key (advisor_id) REFERENCES FACULTY (faculty_id)
)
INSERT INTO 学生表,我已经成功地为 FACULTY 表插入了值;
insert into student
values('111111111', 'Marcus', '21-4748363', 0, 3.11, '90421');
对于第一个问题:
Error report -
ORA-00922: missing or invalid option
00922. 00000 - "missing or invalid option"
对于第二个问题:
Error starting at line : 40 in command -
insert into student
values('111111111', 'Marcus', '21-4748363', 0, 3.11, '90421')
Error report -
ORA-01438: value larger than specified precision allowed for this column
解决方案
对于第一个问题
;
在第一个表定义后使用分号。
对于第二个问题
你应该像这样定义你的表:
create table student (
student_id VARCHAR(25),
std_name VARCHAR(25),
home_phone CHAR(12),
total_credits NUMBER,
gpa NUMBER(3,2),
advisor_id VARCHAR(25),
PRIMARY KEY (student_id),
foreign key (advisor_id) REFERENCES FACULTY (faculty_id)
)
对于 gpa 列,它应该是 NUMBER(3,2) 而不是 NUMBER(1,2) 以支持 3.11 值。
推荐阅读
- powershell - Github action windows runner:如何从 PATH 中删除所有 sh.exe
- python - Tkinter 使用 Pyinstaller 打开不需要的新窗口
- gridview - 将 3 列更改为网格
- java - 扑克游戏:找到玩家获胜的可能性
- jgit - Java 中的 Git 远程更新查找器
- python - Plotly Boxplot 在每次运行结束时附加而不是输出新图
- javascript - RTL getByRole 工作异常。为什么它需要额外的字符才能正常工作?
- ios - SQFLITE 错误:SqfliteDatabaseException(DatabaseException(database_closed))
- python - 如何使用heroku和aws s3存储桶在django rest框架中上传图像
- laravel - 按多个字段搜索 Laravel 和 Elasticsearch