无法在postgresql中创建表

时间:2017-05-01 14:51:37

标签: 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),
  tempat varchar(20),
  jumlah_orang integer,
  petugas varchar(50),
  top date,
  jam_saji time without time zone,
  status_pembayaran boolean default false
);

我收到以下错误:

  

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

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以尝试创建一个函数和一个触发器,将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();