oracle 创建表sql语句,主键,自增长

本文详细介绍了在Oracle数据库中创建表时需要注意的两个关键点:自增长字段的实现方式以及如何处理已存在的表、序列和触发器。通过SQL语句演示了如何检查并删除现有表,创建新表及相应的序列和触发器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在创建表之前请必须了解一下两点

1,oracle 没有identity,所以需要自己用squence 和 trigger 配合使用 实现 自增长。

2,oracle中如果使用关键字,需要用 双引号引起了。所以下面例子中出现的双引号可以理解成转义的。


/    在执行多个sql是用 / 可以区分。


现在就直接来sql语句。


检查是否存在该表,并删除

declare 
      num   number; 
begin 
      select count(1) into num from all_tables where TABLE_NAME = 'TABLEINFO' and OWNER='SCOTT'; 
      if   num=1   then 
          execute immediate 'drop table TABLEINFO'; 
      end   if; 
end; 

/
declare 
num number;
begin
    select count(1) into num from user_sequences where sequence_name='SEQ_TABLEINFOID';
    if num =1 then
    execute immediate 'drop sequence SEQ_TABLEINFOID';
    end if;
end;




/
declare 
num number;
begin
    select count(1) into num from user_triggers where trigger_name='TRI_TABLEINFOID';
    if num=1 then
    execute immediate 'drop trigger TRI_TABLEINFOID';
    end if;
end;


/
CREATE TABLE tableinfo
(
    "id"               number(4) NOT null,
    tablename           varchar2(40) NOT NULL,
    constraint PK_tableinfoID primary key ("id")
);

/
create sequence SEQ_TABLEINFOID
minvalue 1
nomaxvalue
start with 1
increment by 1
nocache;
/
create trigger TRI_TABLEINFOID
before insert on TABLEINFO
for each row
declare 
begin
if inserting and :new."id" is NULL or :new."id" =0 then
:new."id" :=SEQ_TABLEINFOID.nextval;
end if;
end TRI_TABLEINFOID;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值