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),除非在索引中有其他列。 –