在Oracle中,什么相当于MySQL的UNSIGNED?
我有以下查询,只是它不起作用:
CREATE TABLE foo
(
id INT UNSIGNED NOT NULL PRIMARY KEY
);
Run Code Online (Sandbox Code Playgroud)
编辑:我的目的是节省空间,因为对于某些字段,我不会使用负值.或者,它会回答我的问题,即有人确认我要求的东西在Oracle 11g中是不可能的,或者是否可能,但不是直截了当(每个unsigned int超过3行代码).
此外,它不一定是关于int.我也使用smallint和tinyint.
如果要匹配此处显示的限制,可以使用检查约束:
SQL> create table foo (id number primary key,
constraint foo_uint_id check (id between 0 and 4294967295));
Table created.
SQL> insert into foo (id) values (-1);
insert into foo (id) values (-1)
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.FOO_UINT) violated
SQL> insert into foo (id) values (0);
1 row created.
SQL> insert into foo (id) values (4294967295);
1 row created.
SQL> insert into foo (id) values (4294967296);
insert into foo (id) values (4294967296)
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.FOO_UINT_ID) violated
SQL> select * from foo;
ID
----------
0
4294967295
Run Code Online (Sandbox Code Playgroud)