我在oracle初始话表时遇到的问题如下:
1,初始化后表的个数正确,表的构造正确,可是表的内容老是空的!而别人使用同样的表在他们的机子上都初始化成功了;
2,于是我不通过导入文件初始化,而是一个一个建表,结果又出错,问题如下;
SQL> CREATE TABLE s_customer
  2  (id                         NUMBER(7)
  3     CONSTRAINT s_customer_id_nn NOT NULL,
  4   name                       VARCHAR2(50)
  5     CONSTRAINT s_customer_name_nn NOT NULL,
  6   phone                      VARCHAR2(25),
  7   address                    VARCHAR2(400),
  8   city                       VARCHAR2(30),
  9   state                      VARCHAR2(20),
 10   country                    VARCHAR2(30),
 11   zip_code                   VARCHAR2(75),
 12   credit_rating              VARCHAR2(9),
 13   sales_rep_id               NUMBER(7),
 14   region_id                  NUMBER(7),
 15   comments                   VARCHAR2(255),
 16       CONSTRAINT s_customer_id_pk PRIMARY KEY (id),
 17       CONSTRAINT s_customer_credit_rating_ck
 18          CHECK (credit_rating IN ('EXCELLENT', 'GOOD', 'POOR')));
CREATE TABLE s_customer
             *
ERROR at line 1:
ORA-00955: name is already used by an existing object
SQL>
SQL> INSERT INTO s_customer VALUES (
  2     201, 'Unisports', '55-2066101',
  3     '72 Via Bahia', 'Sao Paolo', NULL, 'Brazil', NULL,
  4     'EXCELLENT', 12, 2, NULL);
INSERT INTO s_customer VALUES (
*
ERROR at line 1:
ORA-00001: unique constraint (SYSTEM.S_CUSTOMER_ID_PK) violated

解决方案 »

  1.   

    楼主。
    看错误消息就知道原因了。自己也可以改正的。
    ORA-00955: name is already used by an existing object
    这个对象已经存在了,需要删除掉,然后再创建。
    ORA-00001: unique constraint (SYSTEM.S_CUSTOMER_ID_PK) violated插入的值违反了主键约束。。
      

  2.   

    drop table  s_customer;
    create table;然后insert,就不会报这2个错误了。
      

  3.   

     --既然表已经存在,那么就换个表名字s_customer_new
     CREATE TABLE s_customer_new
         (id                         NUMBER(7)
            CONSTRAINT s_customer_id_nn NOT NULL,
          name                       VARCHAR2(50)
            CONSTRAINT s_customer_name_nn NOT NULL,
          phone                      VARCHAR2(25),
          address                    VARCHAR2(400),
          city                       VARCHAR2(30),
          state                      VARCHAR2(20),
         country                    VARCHAR2(30),
         zip_code                   VARCHAR2(75),
         credit_rating              VARCHAR2(9),
        sales_rep_id               NUMBER(7),
         region_id                  NUMBER(7),
         comments                   VARCHAR2(255),
             CONSTRAINT s_customer_id_pk PRIMARY KEY (id),
             CONSTRAINT s_customer_credit_rating_ck
                CHECK (credit_rating IN ('EXCELLENT', 'GOOD', 'POOR')));  --由于是新表s_customer_new,所以插入第一条记录,就应该Ok了。          
      INSERT INTO s_customer VALUES (
            201, 'Unisports', '55-2066101',
            '72 Via Bahia', 'Sao Paolo', NULL, 'Brazil', NULL,
            'EXCELLENT', 12, 2, NULL);
      

  4.   

    这个问题是你的表已经存在了,可能是你上次初始化已经插入了这个表了,可以drop掉这个表以后,再重新create这个表。CONSTRAINT s_customer_id_pk PRIMARY KEY (id)这里有个主键约束和上面相同,也许你的初始化不仅建立了这个表,而且还成功的插入了id为201的数据了,你可以通过select * from s_customer where id=201 查询一下,应该有一条记录处理方法同上重建表,或者delete * from s_customer;清除记录