Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我觉得我搞错了_Sql_Database_Oracle - Fatal编程技术网

Sql 我觉得我搞错了

Sql 我觉得我搞错了,sql,database,oracle,Sql,Database,Oracle,佣金分类列应能够存储最大值为99的整数,并命名为Comm\u id。如果在添加行时未提供值,则应将Comm_id列的值自动设置为10。“福利代码”列还应包含最大为99的整数值,并命名为benu id alter table ACCTMANAGER add (Comm_id varchar2(99), Ben_id varchar2(99)); 我不知道这是否正确更改表ACCTMANAGER add(Comm_id number(2)默认为10,Ben_id number(2)) 基本上,

佣金分类列应能够存储最大值为99的整数,并命名为
Comm\u id
。如果在添加行时未提供值,则应将
Comm_id
列的值自动设置为10。“福利代码”列还应包含最大为99的整数值,并命名为
benu id

alter table ACCTMANAGER 
add (Comm_id varchar2(99), 
Ben_id varchar2(99)); 

我不知道这是否正确

更改表ACCTMANAGER add(Comm_id number(2)默认为10,Ben_id number(2))

基本上,对于数字数据类型,您有精度和比例。如果未指定小数位数,则小数位数为0,表示数字后没有小数位数。数字(2)表示此处最多只能存储两位数的数字,如果未指定列,则默认关键字会自动设置该值

顺便说一句,尝试使用oracle文档来完成这类作业。这里有一些很好的例子

编辑 alter table ACCTMANAGER add(通信id号(2)默认值10约束lowchk1检查(通信id>=0),Ben_id号(2)约束lowchk2检查(Ben_id>=0))


抱歉,我无法确定语法,因为我没有在家中安装Oracle。我只在办公室工作。

@MSStp提供了一个很好的答案,但您仍然需要约束以确保不会在表中获得错误数据(例如负数)。如果约束条件是佣金和福利列必须包含0到99之间的整数,并且您希望确保Oracle不会接受2.2的输入(它将在MS的解决方案中接受该输入,它只会将其截断为2并在数据库中存储2),正如Abdul Rehman Sayed在对您的问题的评论中所建议的,您需要添加约束

alter table acctmanager
    add ( comm_id number(2) default 10 
                    constraint check_comm ( comm_id >= 0 and comm_id = trunc(comm_id) ),
          ben_id  number(2) 
                    constraint check_ben  ( ben_id  >= 0 and ben_id  = trunc(ben_id) )
        )
;
然而:只是一个想法。。。。。什么是
comm\u id
ben\u id
?如果它们是特定佣金和福利说明/级别/任何东西的某种代码,您真的需要检查约束吗?您是否有不同的表格解释这些代码,
comm\u id
ben\u id
是(或应该是)主键?在这种情况下,您需要外键约束,而不是检查约束

ALTER TABLE ACCTMANGER ADD(Comm_id NUMBER(2) DEFAULT 10 NOT NULL, Ben_id NUMBER(2));
在那之后,你可以看到表格被修改了

要查看输出,请编写以下命令:

DESC ACCTMANAGER;

您将看到整个表以及更新的列

如果佣金和福利是整数,为什么要创建varchar列?通过检查约束可以轻松管理最大值,并且,
Comm\u id
列上没有默认值。欢迎使用堆栈溢出!请复习我们的文章,帮助你提出一个好问题,从而得到一个好答案。这个答案可能会有帮助,但实际上并不正确。它允许插入负数(高达-99),也可以插入小数,如2.2;Oracle将悄悄地将其截断为2,并将2存储在基表中。您可以轻松添加检查约束以将数字限制为正值,我不确定您希望如何处理值的舍入,如果值小于0.5,oracle将截断该值,如果值大于或等于0.5,oracle将对该值进行四舍五入…我已经演示了如何在解决方案中检查数字是否为整数;你检查这个数字是否等于它的截断值。是啊,很抱歉我早上太早没读你的答案。