Can';t在postgresql中创建表

Can';t在postgresql中创建表,postgresql,ddl,postgresql-9.5,Postgresql,Ddl,Postgresql 9.5,执行以下查询后: 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)

执行以下查询后:

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
);
我得到以下错误:

错误:无法在默认表达式中使用列引用


如何解决此问题?

您可以尝试创建一个函数和一个触发器,将
pesan\u id
的默认值指定为
tanggal\u 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();

这个错误是不言自明的。是否有某种方法可以停止使用列引用作为默认值,并且仍然拥有所需的逻辑?您想在那里做什么?这个
pesan()
函数有什么作用?
date NEW.tanggal\u pesan
中的
date
前缀无效