Не могу создать таблицу в postgresql

После выполнения следующего запроса:

create table sel_pesan(
  pesan_id varchar(7) not null default pesan(tanggal_pesan),
  cust_id varchar(5),
  cp_nama varchar(50),
  cp_tlp varchar (20),
  tanggal_pesan date,
  tanggal_acara date,
  nama_acara varchar(40),
  sesi varchar(10),
  tempat varchar(20),
  jumlah_orang integer,
  petugas varchar(50),
  top date,
  jam_saji time without time zone,
  status_pembayaran boolean default false
);

Я получаю следующую ошибку:

ОШИБКА: нельзя использовать ссылки на столбцы в выражении по умолчанию

Как это исправить?


person Azharudin Fajrullah    schedule 01.05.2017    source источник
comment
Ошибка довольно понятна. Есть ли способ перестать использовать ссылку на столбец в качестве значения по умолчанию и сохранить желаемую логику?   -  person Tim Biegeleisen    schedule 01.05.2017
comment
Что вы там пытаетесь сделать? Что делает эта функция pesan()?   -  person a_horse_with_no_name    schedule 04.05.2017


Ответы (1)


Вы можете попробовать создать функцию и триггер для назначения значения по умолчанию pesan_id со значением tanggal_pesan.

Примечание. Я не знаю, является ли pesan() пользовательской функцией. Следующий код присваивает значение tanggal_pesan, преобразованное в строку.

Кроме того, вы должны изменить pesan(tanggal_pesan) допустимым строковым значением по умолчанию, например: пустой строкой.

CREATE OR REPLACE FUNCTION sel_pesan_insert() RETURNS trigger AS
 BEGIN
     NEW.pesan_id := to_char(NEW.tanggal_pesan, 'YYYY-MM-DD');
     RETURN NEW;
 END;
LANGUAGE plpgsql;

CREATE TRIGGER sel_pesan_insert_tgr BEFORE INSERT OR UPDATE ON sel_pesan FOR EACH ROW EXECUTE PROCEDURE sel_pesan_insert();
person Yulio Aleman Jimenez    schedule 02.05.2017
comment
префикс date в date NEW.tanggal_pesan недействителен - person a_horse_with_no_name; 04.05.2017