如何让一个表的number列的默认值为当前年份?

[复制链接]
查看11 | 回复6 | 2005-2-28 12:57:00 | 显示全部楼层 |阅读模式
rt
一个表tab,按如下语法创建时报错,如何才能使no的缺省值为当前年份?
create table tab(id number not null,
no number(4,0) default to_number(to_char(sysdate,'yyyy')),
str char(2));
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
哈哈,你仔细看看你错误代码!
表名称可以是tab吗?!!
我把表名称改了之后,在9i通过
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
Legal default values include any literal or expression that does not refer to a column, LEVEL, ROWNUM, or PRIOR. Default values can include the SQL functions SYSDATE, USER, USERENV, and UID. The datatype of the default literal or expression must match or be convertible to the column datatype.
8 1 7
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
最初由 linzhan 发布
[B]哈哈,你仔细看看你错误代码!
表名称可以是tab吗?!! [/B]

我只是随便起了个名称而己,较什么真啊,表名称为什么不能是tab?
SQL> create table tab(id int);
表已创建。
SQL> insert into tab values(1);
已创建 1 行。
SQL> select id from tab;
ID
----------
1
SQL> drop table tab;
表已丢弃。
SQL> select * from tab where rownum create table tab(id number not null,
2no number(4,0) default to_number(to_char(sysdate,'yyyy')),
3str char(2));
表已创建。
SQL> insert into tab(id,str) values(1,'a');
已创建 1 行。
SQL> select * from tab;
ID NO ST
---------- ---------- --
1 2003 a
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
SQL> create table tab(id int);
create table tab(id int)

*
ERROR λÓÚµÚ 1 ÐÐ:
ORA-00955: name is already used by an existing object
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
你的报什么错?
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
不清楚这个问题,也许跟当前用户有关/
SQL> select OWNER,OBJECT_NAME FROM ALL_OBJECTS WHERE OBJECT_NAME = 'TAB';
OWNER
OBJECT_NAME
------------------------------ ------------------------------
SYS
TAB
PUBLIC
TAB
SQL> conn /as sysdba;
已连接。
SQL> create table tab(id int);
create table tab(id int)

*
ERROR 位于第 1 行:
ORA-00955: 名称已被现有对象占用

SQL> conn zhuys/zhuys@dbora
已连接。
SQL> create table tab(id int);
表已创建。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行