Postgresql - insert w funkcji niemożliwy

0

Hej,
mój problem wygląda następująco:
Mam tabelę rezerwacje której struktura wygląda tak:

 id_rezerwacje serial NOT NULL,
  rowery_id_rowery integer NOT NULL,
  klient_id_klienta integer NOT NULL,
  data_rezerwacji timestamp without time zone,
  ile_dni integer

I chcę do niej dodawać rekordy w taki sposób, że id_klienta oraz id_roweru wpisuję ręcznie (wcześniej wyciągając z innej tabeli) a data jest dopisywana automatycznie.
Chciałam to zrobić funkcją, ale Postgresql nie pozwala na stosowanie INSTERTa w funkcjach.
Kolejnym pomysłem było zrobienie tego za pomocą RULE:

CREATE RULE dodajRowerTest AS ON INSERT TO rowery 
	DO INSERT INTO rowery VALUES(
			1
			NEW.rowery_id_rowery::INTEGER, 
			NEW.klient_id_klient::INTEGER, 
			CURRENT_DATE, 
			NEW.ile_dni
	);
 

Ale tu pojawia się błąd "kolumna new.rowery_id_rowery nie istnieje". Czy możecie podpowiedzieć jak powinnam to napisać?

0

Jeśli tylko dla INSERTa, to najlepsze rozwiązanie to DEFAULT na kolumnę, czyli:

CREATE TABLE rowery
(
  id_rezerwacje serial NOT NULL,
  rowery_id_rowery integer NOT NULL,
  klient_id_klienta integer NOT NULL,
  data_rezerwacji timestamp without time zone NOT NULL DEFAULT transaction_timestamp(),
  ile_dni integer,
  CONSTRAINT rowery_pkey PRIMARY KEY (id_rezerwacje)
)

A jak na INSERT i UPDATE, to funkcja + trigger

0

Dziękuję :)

Swoją drogą, da to się jednak zrobić także funkcją, wystarczy, żeby była VALATILE

1 użytkowników online, w tym zalogowanych: 0, gości: 1