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
前缀无效