2017-05-01 5 views
0

でテーブルを作成することはできません、次のクエリを実行した後:この問題を解決する方法は、PostgreSQL

ERROR: cannot use column references in default expression

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 
); 

を私は次のエラーを取得しますか?

+0

エラーはかなりわかりやすいです。列参照をデフォルト値として使用するのをやめて、やはり必要なロジックを持っていれば、何らかの方法がありますか? –

+0

あなたは何をしようとしていますか?この 'pesan()'関数は何をしますか? –

答えて

0

デフォルト値pesan_idに値tanggal_pesanを割り当てる関数とトリガーを作成できます。

注:pesan()がカスタム機能であるかどうかわかりません。次のコードは、tanggal_pesanの値をstringに変換したものです。

また、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(); 
+1

'date NEW.tanggal_pesan'の' date'接頭辞は無効です –