1

Temat: usunięcie atrybutu "UNIQUE"

Witam!
W jaki sposób mogę usunąć z jakiegoś pola atrybut UNIQUE? Zależy mi na tym, aby nie robić tabeli od nowa, tylko zrobić to za pomocą jakiegoś polecenia. Myślę że da się to zrobić za pomocą polecenia ALTER TABLE, jednak udało mi się znaleźć tylko jak ustawić ten atrybut, nie znalazłem jak zdjąć. Nie udaje mi się to też z poziomu pgAdmin, kiedy próbuję usunąć ograniczenie, dostaję komunikat o błędzie, ponieważ pole z którego próbuję zdjąć atrybut jest w tabeli częścią klucza głównego, a tabela jest powiązana relacją z inną tabelą. Obydwie tabele są w tej chwili puste.

2

Odp: usunięcie atrybutu "UNIQUE"

Z tego co piszesz wynikałoby, że w drugiej tabeli znajduje się klucz obcy powiązany z kolumną z pierwszej tabeli, która posiada ograniczenie UNIQUE. Najprościej byłoby użyć parametru CASCADE, który jednocześnie automatycznie usunie klucz obcy np.:

ALTER TABLE NazwaPierwszejTabeli DROP CONSTRAINT NazwaTabeli_NazwaKolumny_key CASCADE;

Nazwę ograniczenia można uzyskać w psql przez \d NazwaPierwszejTabeli, albo w pgAdmin III, przy czym powinna być też opcja "Drop Cascaded" albo "Usunięcie kaskadowe".

Ostatnio edytowany przez gszpetkowski (2011-09-03 16:29:57)

3

Odp: usunięcie atrybutu "UNIQUE"

Właśnie o takie poleceni mi chodziło, działa tak jak chciałem, także dziękuje.