c关于oracle 10g 的自增字段

Uncommon 2007-08-29 10:46:36
c关于oracle 10g 的自增字段

表:
create table T_Log (
LogID VARCHAR2(32) not null,
UserName VARCHAR2(32) not null,
LoginAddress VARCHAR2(32) not null,
LogTime VARCHAR2(32) ,
LogType VARCHAR2(64) ,
constraint PK_T_Log primary key (LogID)


问题一、LogID为字增字段,Trigger编译报错,为何?
/*==============================================================*/
/* Sequence: SEQ_T_Log_LogID */
/*==============================================================*/
create sequence SEQ_T_Log_LogID
minvalue 1
maxvalue 99999999
start with 1
increment by 1
nocache
order;
/
/*==============================================================*/
/* Trigger: TRI_T_Log_LogID */
/*==============================================================*/
create or replace trigger TRI_T_Log_LogID
before insert on T_Log
for each row
declare
nextid number;
begin
if :new.LogID is null then
select SEQ_T_Log_LogID.nextval
into nextid
from T_Log;
:new.LogID:=nextid;
end if;
end TRI_T_Log_LogID;
/
问题二、LogTime的默认值如何设置为系统时间?
问题三、在9i下正常的spool C:/KBMS_CreateLog.log语句为何10g报错。

此外,大家看看这个问题http://community.csdn.net/Expert/TopicView3.asp?id=5
...全文
248 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
icedut 2007-08-30
  • 打赏
  • 举报
回复
insert into t_log values (null,'DDa','ad',NULL,NULL)---

--因为你输入了null
如果那个字段没有输入值,才会用他的默认值

insert into T_Log (
LogID , UserName , LoginAddress, LogType )
values
(...);

这样才会用默认值
Uncommon 2007-08-29
  • 打赏
  • 举报
回复
错了,地址是
http://community.csdn.net/Expert/TopicView3.asp?id=5726617

是“Oracle 10g 中文乱码问题”

问题二改成 VARCHAR2(32 BYTE) DEFAULT sysdate,后
insert into t_log values (null,'DDa','ad',NULL,NULL)---其中第四字段为DEFAULT sysdate

select 出来就是空值阿,没有默认值啊
icedut 2007-08-29
  • 打赏
  • 举报
回复
问题三、在9i下正常的spool C:/KBMS_CreateLog.log语句为何10g报错。

这个不好说
不知道KBMS_CreateLog.log的内容
也不知道抱什么错误
icedut 2007-08-29
  • 打赏
  • 举报
回复
输入Http://community.csdn.net/Expert/TopicView3.asp?id=5
就转到了http://topic.csdn.net/t/19991229/00/5.html,帖子是n年前的帖子,而且是delphi的, 不懂

有关TThread的FreeOnTerminte楼主kxy(手举穿肠毒药,怀抱刮骨钢刀)1999-12-29 00:11:00 在 Delphi / VCL组件开发及应用 提问
如果一个Thread在运行中,主程序结束,FreeOnTerminate没有
起作用,也就是说,Thread没有被释放,内存出现泄漏,如果Thread执行
完,主程序结束,Thread被释放.

OnFormClose中,Thread.Terminate,强制Thread结束也没有作用,
不知大家有没有好建议.

我是用,MemProof程序检查到内存泄漏的.

Uncommon 2007-08-29
  • 打赏
  • 举报
回复
哈哈
谢谢

问题三呢?
还有
ttp://community.csdn.net/Expert/TopicView3.asp?id=5

分都给你
icedut 2007-08-29
  • 打赏
  • 举报
回复
问题二
CREATE TABLE T_LOG
(
LOGID VARCHAR2(32 BYTE) NOT NULL,
USERNAME VARCHAR2(32 BYTE) NOT NULL,
LOGINADDRESS VARCHAR2(32 BYTE) NOT NULL,
LOGTIME VARCHAR2(32 BYTE) DEFAULT sysdate,
LOGTYPE VARCHAR2(64 BYTE)
)

问题一
select SEQ_T_Log_LogID.nextval
into nextid
from T_Log;
改成
select SEQ_T_Log_LogID.nextval
into nextid
from dual;

:new.LogID:=nextid;--类型不对

icedut 2007-08-29
  • 打赏
  • 举报
回复
CREATE OR REPLACE TRIGGER TRI_T_LOG_LOGID
BEFORE INSERT
ON ET_STATISTICS.T_LOG
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
declare
nextid number;
begin
if :new.LogID is null then
select SEQ_T_Log_LogID.nextval
into nextid
from dual;
:new.LogID:=to_char(nextid);
end if;
end TRI_T_Log_LogID;
/

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧