postgres ERROR:专栏" id"不存在?

时间:2014-09-02 23:49:22

标签: postgresql jdbc

我使用下面的StaticSentence在postgres中创建了一个表。表读取是从另一个表产品创建的,其中的数据被删除,因为我只是想要架构(我真的很擅长这个但我确信有更好的方法来处理它)。

public void syncProductsBefore() throws BasicException {
    new StaticSentence(s,"CREATE TABLE PRODUCTS_imports(ID) WITH OIDS  AS SELECT * FROM PRODUCTS ").exec();
    new StaticSentence(s, "DELETE FROM PRODUCTS_imports").exec();
}

然后我尝试使用下面方法中的PreparedSentence写入此表。首先运行更新命令以了解是插入新数据还是更新现有数据。

public void syncProduct(final ProductInfoExt prod)抛出BasicException {

    Transaction t = new Transaction(s) {
        public Object transact() throws BasicException {
            /*Sync the Product in a transaction*/

            /* Try to update*/
            if (new PreparedSentence(
                    s,
                    "UPDATE PRODUCTS SET REFERENCE = ?, CODE = ?, NAME = ?, PRICEBUY = ?, PRICESELL = ?, CATEGORY = ?, TAXCAT = ?, IMAGE = ? WHERE ID = ?",
                    SerializerWriteParams.INSTANCE).exec(new DataParams() {
                public void writeValues() throws BasicException {
                    setString(1, prod.getReference());
                    setString(2, prod.getCode());
                    setString(3, prod.getName());
                    // setBoolean(x, p.isCom());
                    // setBoolean(x, p.isScale());
                    setDouble(4, prod.getPriceBuy());
                    setDouble(5, prod.getPriceSell());
                    setString(6, prod.getCategoryID());
                    setString(7, prod.getTaxCategoryID());
                    setBytes(8, ImageUtils.writeImage(prod.getImage()));
                    // setDouble(x, 0.0);
                    // setDouble(x, 0.0);
                    setString(9, prod.getID());
                }
            }) == 0) {


                /* leyonce */
                /**
                 * If not updated, try to insert insert into the import
                 * temporary table create temporary sorted copies of product
                 * catalog and products
                 */
                new PreparedSentence(
                        s,
                        "INSERT INTO PRODUCTS_imports(ID, REFERENCE, CODE, NAME, ISCOM, ISSCALE, PRICEBUY, PRICESELL, CATEGORY, TAXCAT, IMAGE, STOCKCOST, STOCKVOLUME) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
                        SerializerWriteParams.INSTANCE)
                        .exec(new DataParams() {                            
                            public void writeValues() throws BasicException{

                            /*leyonce --insert values into temporary import table*/ 
                                setString(1, prod.getID());
                                setString(2, prod.getReference());
                                setString(3, prod.getCode());
                                setString(4, prod.getName());
                                setBoolean(5, prod.isCom());
                                setBoolean(6, prod.isScale());
                                setDouble(7, prod.getPriceBuy());
                                setDouble(8, prod.getPriceSell());
                                setString(9, prod.getCategoryID());
                                setString(10, prod.getTaxCategoryID());
                                setBytes(11, ImageUtils.writeImage(prod
                                        .getImage()));
                                setDouble(12, 0.0);
                                setDouble(13, 0.0);

); }

现在更新运行完美,但是当编译器进入insert语句时,它会回滚并返回错误

org.postgresql.util.PSQLException: 
ERROR: column "id" does not exist
  Position: 84

我真的不明白为什么。

1 个答案:

答案 0 :(得分:0)

psql
\d PRODUCTS_imports
\d PRODUCTS

他们有ID列吗?

如果原始表(产品)缺少可以解释错误的ID列。