pulla
pulla
#programowanie #postgresql

ALTER TABLE production ALTER COLUMN production_symbol SET DEFAULT f_random_text(8);
Czy jeżeli mam kolumnę która ma defualt wartość wyznaczaną na podstawie funkcji frandomtext, to mogę dodać tutaj ifa? na zasadzie if COLUMN productionpriority = False SET DEFAULT frandomtext(8) a jeżeli true to trzeba podać z palca wartośc?
  • Najlepsze
  • Wszystkie komentarze
m504
m504
m504
2
@pulla: Nie za bardzo rozumiem ocb. Jak to podać wartość z palce? Chodzi Ci o to aby wartość DEFAULT była zależna od innej kolumny w tej samej tabeli (tak się nie da, chyba że w triggerze).
m504
m504
m504
2
@pulla: Nie ma na to prostego sposobu (przynajmniej nie znam). Nie można ustawić domyślnej wartości która jest zależna od innej kolumny.

Masz dwa sposoby:

1. Stwórz TRIGGER BEFORE INSERT i w funkcji triggera ustaw odpowiednią wartość.

2. Jawnie przekazać odpowiednie wartości przy wywoływaniu polecenia INSERT
m504
m504
m504
1
@pulla: Jako że unikam jak ognia swojego aktualnego taska to Ci zrobiłem przykład użycia triggera (30 sek roboty).

CREATE OR REPLACE FUNCTION production_default_values_trigger()
RETURNS trigger AS
m504
m504
m504
1
@pulla: ajj, sorry

'IF NEW.production_priority = FALSE THEN'

tak powinno być
pulla
pulla
pulla Autor
0
@m504: Tak aby wartość DEFAULT była zależna od innej kolumny. Dokładnie od kolumny typie boolean, która też defualtowo jest ustawiana na false i jak robie inserta to nie podaje symbolu i tej kolumny boolean bo robią sie defualtowo, a chciałbym jak zrobie insert i podam boolean jako true to wtedy nie zadziała funkcja frandomtext(8) tylko trzeba będzie wpisać ręcznie nazwę stringa.
pulla
pulla
pulla Autor
0
@m504: Ok dzięki za pomoc, poszukam w necie wg Twoich sposobów. Mam nadzieje, że mnie to nie przerośnie ;)
pulla
pulla
pulla Autor
0
@m504: dzięki, ale dziwna sprawa. Jak chce dodać wartości do bazy to wywala mi błąd

ERROR: column "production_priority" does not exist

LINE 1: SELECT production_priority = FALSE

Sprawdziłem czy nie ma jakiejś literówki, ale nie znalazłem. Orientujesz się o co chodzi? Bo columna production_priority istnieje na 100%.
pulla
pulla
pulla Autor
  • adult
0
Treść przeznaczona dla osób powyżej 18 roku życia...