使用小写也可以进行检索啊Oracle上没有自增字段,可以使用索引和触发器来达到此目的
第一步:创建SEQUENCE
create sequence s_country_id increment by 1 start with 1 maxvalue 999999999;
第二步:创建一个基于该表的before insert 触发器,在触发器中使用该SEQUENCE
create or replace trigger bef_ins_t_country_define
before insert on t_country_define
referencing old as old new as new for each row
begin
new.country_id=s_country_id.nextval;
end;

解决方案 »

  1.   

    oracle 忽略表名和列名的大小写。
    但是表名和列名以大写形式存储在ORACLE的内部数据字典中。
    当用户输入一个查询时,它立即将表名和列名转化为大写,然后与字典中的内容进行检查对比。
      

  2.   

    ORACLE默认是大写的。在写SQL语句时是没有任何影响的。
    但表中的数据当然要区分大小写的了。至于自增列,有序列就可以满足。具体可以看楼上的。
      

  3.   

    Oracle的数据字典中,对表名和字段名的存储一般采用大写。此时,用大写或小写的表名或字段名访问Oracle都是可以的。
    如果采用特别的方式,创建小写的表名或字段名,则需要采用特别的方式来访问表名或字段名。如下:
    select "col1" from "table_name",这样就可以严格使用大小写,由于这样太麻烦,都常都使用大小写无关的方式了。
      

  4.   

    oracle允许小写的字段名和表名,但默认都是大写。
    如果这样写:select aa,bb from tab;则可以不区分大小写,ORACLE自动认为是大写。但如果这样:select "AA","BB" FROM "TAB";则必须要大写了。
     但有特殊情况:
      例如:用 create table tab_a (...)创建的表都可以用上面的方法查询,但如果加上双引号就不同了。
       create table "TAB_A" (...) :与上面的结果一样,但下面就不同了。
       create table "Tab_a" (...); 和create table "tab_a" (...);则可以创建两个不同的表,针对这种表的查询必须使用双引号,而且大小写必须一致。
     比如:select * from tab_a;和 select * from "TAB_A";是一样的,但select * from "Tab_a";就不同了。
    而且你如果同时用 tab_a,"Tab_a","tab_a"做为表名创建表,则会创建三个不同的表。
     其查询,操作也必须使用同样的名字:tab_a = Tab_a = "TAB_A","Tab_a","tab_a"。
    而且不同的大小写组合就可以创建不同的表。
      select table_name from sys.all_tables(或sys.user_tables);可以看到表名的实际名字。  够了吧,赶快结贴。
      

  5.   

    Oracle accept both upper case and lower case table name and columne name table tab is same as TAB or Tab .