我有这个表,我希望最多有300行数据:
CREATE TABLE "ADMIN"."SESSIONS"
( "SESSIONID" VARCHAR2(30 BYTE),
"SESSIONTYPE" NUMBER(*,0),
"USERID" VARCHAR2(30 BYTE),
"ACTIVITYSTART" TIMESTAMP (6),
"ACTIVITYEND" TIMESTAMP (6),
"ACTIVITY" CLOB,
"USERNAME" VARCHAR2(30 BYTE),
"IPADDRESS" VARCHAR2(30 BYTE),
"LOGINTIME" TIMESTAMP (6),
"LOGOUTTIME" TIMESTAMP (6)
) SEGMENT CREATION IMMEDIATE
如果没有达到最大数量,你能告诉我如何插入表格吗?我想用准备好的声明来做这件事。
答案 0 :(得分:1)
我通常会将此问题作为Creating a table with max number of rows (ORACLE)的副本关闭。基本上,这几乎是不可能的,如果你需要这样做,你可能做错了什么。您不希望在插入表之前计算表中的记录数 - 这是一项过多的工作。
但是,考虑到表中列名的名称,可能有一种更简单的方法。将SESSIONS
参数更改为300.这会将数据库限制为300个并发会话。如果尝试创建301 st 会话,将引发错误 ORA-00018最大会话数超过。如果您要限制并发用户数量,则可能必须相对积极地删除未使用的连接 - 这取决于您期望的用户数量。
如果仍然需要在此之后维护表,那么你可以使用BEFORE LOGON和BEFORE LOGOFF触发器来维护它(虽然我不确定ACTIVITYEND
和{{1可以用于),BEFORE LOGIN触发器将插入到表中,BEFORE LOGOFF将从中删除。
答案 1 :(得分:0)
在表格中添加一个ID列,使用Jeffrey Kemp在@ Creating a table with max number of rows (ORACLE)指向的序列中控制其值。
(对不起 - 暂时不允许发表评论。所以如果这有帮助的话,请谅解Ben。否则:还需要什么?)