3
タイムスタンプ列を持つテーブルを作成しようとしています。問題は、月と年の組み合わせをユニークにすることです。私はこれを試してみましたが、それは助けにはならない:一意のチェックでタイムスタンプから月と年を抽出しますか?
CREATE TABLE adempiere.SOIP_Deudas (
--Columnas del sistema
SOIP_Deudas_ID numeric(10) NOT NULL PRIMARY KEY,
ad_client_id numeric(10) NOT NULL,
ad_org_id numeric(10) NOT NULL,
updatedby numeric(10) NOT NULL,
createdby numeric(10) NOT NULL,
updated timestamp NOT NULL,
created timestamp NOT NULL,
isactive char(1) DEFAULT 'Y'::bpchar NOT NULL,
--Columnas del usuario
SOIP_Departamentos_ID numeric(10) NOT NULL,
fecha timestamp NOT NULL,
monto real NOT NULL DEFAULT 0,
FOREIGN KEY (SOIP_Departamatos_ID) REFERENCES SOIP_Departamentos(SOIP_Departamentos_ID),
UNIQUE (EXTRACT (MONTH FROM TIMESTAMP fecha), EXTRACT(YEAR FROM TIMESTAMP fecha))
)
特定の年と月の列を持つことなく、私はそれを行うことができる方法の任意のアイデア?
ありがとうございました。
が魅力のように働いた、ありがとうございました。 – Uri
これは少し速いかもしれませんが、 '(date_trunc( 'month'、fecha))'にインデックスを付けることです。 http://www.postgresql.org/docs/current/interactive/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC – kgrittn
@kgrittnまたは: 'date_trunc( 'month'、fecha):: date'、なぜなら' datetrunc( ) 'はタイムスタンプを返し、日付(8または4バイト - >インデックスサイズ)のみが必要です。しかし、[データ整列と埋め込みのために、インデックスに追加の列がない限り、保存された4バイトは無駄になります(http://stackoverflow.com/a/7431468/939860)。 –