2012-05-04 2 views
0

Я создал одну таблицу в данных оракула основывают мой стол сценарийпадения уникальный ключ и генерировать новый уникальный ключ

CREATE TABLE wsc_widget_bundle (
    id VARCHAR (50), 
    widgetBundle BLOB NULL, 
    devicesoftwareclass VARCHAR(30) NOT NULL, 
    widgetProfileId VARCHAR (50) NOT NULL, 
    bundleHash BLOB NULL, 
    widgetLocale VARCHAR (6) NOT NULL , 
    status INT, 
     primary key(id), 
     unique(widgetProfileId, devicesoftwareclass,status), 
    foreign key(widgetProfileId) references wsc_widget_profile(id) 
); 

Когда я создать DDL для этого есть выглядит как

create table "DEV1"."WSC_WIDGET_BUNDLE"(
    "ID" VARCHAR2(50) not null, 
    "WIDGETBUNDLE" BLOB, 
    "DEVICESOFTWARECLASS" VARCHAR2(30) not null, 
    "WIDGETPROFILEID" VARCHAR2(50) not null, 
    "BUNDLEHASH" BLOB, 
    "WIDGETLOCALE" VARCHAR2(6) not null, 
    "STATUS" NUMBER, 
    constraint "SYS_C00323290" primary key ("ID") 
); 

alter table "DEV1"."WSC_WIDGET_BUNDLE" 
    add constraint "SYS_C00323292" 
    foreign key ("WIDGETPROFILEID") 
    references "MTP440_DEV1"."WSC_WIDGET_PROFILE"("ID"); 
create unique index "MTP440_DEV1"."SYS_C00323290" on "MTP440_DEV1"."WSC_WIDGET_BUNDLE"("ID"); 
create unique index "MTP440_DEV1"."SYS_C00323291" on "MTP440_DEV1"."WSC_WIDGET_BUNDLE"("WIDGETPROFILEID","DEVICESOFTWARECLASS","STATUS"); 
create index "MTP440_DEV1"."TEST" on "MTP440_DEV1"."WSC_WIDGET_BUNDLE"("DEVICESOFTWARECLASS","STATUS","WIDGETLOCALE","WIDGETPROFILEID"); 

Теперь я хочу написать скрипт alter для изменения уникального ограничения ключа моей таблицы, но, как при создании таблицы, я не упомянул имя моего уникального имени ключа, которое оно дается системой, такой как SYS_C00323291 Так как я могу написать скрипт для изменения этого уникального ключа чье имя мне неизвестно и новое поколение

+0

Harshil - Как хорошая практика, мы всегда должны указывать PK, UK, чтобы избежать поиска таблиц, подобных user_constraints. – pahariayogi

ответ

0

Вы можете найти имя ограничения, запросив представления user_constraints и user_cons_columns.

0
Alter table x 
drop constraint pk; 

Alter table x 
add constraint New_constraint_name PRIMARY KEY (colname); 
+0

Как я упоминаю в приведенном выше коде, я хочу удалить уникальный ключ, имя которого не сгенерировано системой, а не первичный ключ – Harshil

+0

мой плохой. получите имя ограничения из таблицы определений ограничений. быстрый поиск вернул ссылку на аналогичную проблему с запросом. http://en.allexperts.com/q/Oracle-1451/2008/9/retrieve-table-constraints.htm – Steffe

Смежные вопросы