如何将servicestack的默认Postgres列数字创建更改为数字(38,20)

时间:2013-09-26 03:59:15

标签: postgresql servicestack ormlite-servicestack

我从ServiceStack ORMLite类

创建PostgreSQL表
[Alias("generaljournalline")]
    public class GeneralJournalLine
    {
        [Required]
        [Alias("debitamount")]
        [Default(typeof(decimal), "0")]
        public decimal DebitAmount { get; set; }

        [Required]
        [Alias("creditamount")]
        [Default(typeof(decimal), "0")]
        public decimal CreditAmount { get; set; }
}

如何将Postgres列debitamount,creditamount从数字(38,6)更改为数字(38,20)。

谢谢你。

1 个答案:

答案 0 :(得分:2)

如果你找不到另一种方法,那么在PostgreSQL中实现它的方法非常简单:

 ALTER TABLE generaljournalline ALTER COLUMN debitamount TYPE numeric;

这将完全放弃长度限制。

顺便说一句,我发现在会计软件中,通常更容易将金额存储在一个列中( - 用于借记,+用于贷记)并在提取时将它们分开。我不确定您是否可以使用ORM执行此操作,除非您先设计表,然后查看,并使用ORM与视图进行交互。主要优点是您不需要使用CHECK约束来处理如果某人存储负数而发生的情况。毕竟,如果有人将-100作为借记存储而-100作为相应的信用存储甚至意味着什么呢?