小编Dia*_*nto的帖子

空值不是唯一的

我在postgres上有这样的行:

 name | address | college 

 john | rome    |
 john | rome    |
 max  | tokyo   |
Run Code Online (Sandbox Code Playgroud)

我创建一个这样的表:

create test (
name    varchar(10),
address varchar(20),
college varchar(20),
constraint test_uq unique (name,address,college);
Run Code Online (Sandbox Code Playgroud)

如何使空值变为唯一,因此输出可以是这样的:

 name | address | college 

 john | rome    |
 max  | tokyo   |
Run Code Online (Sandbox Code Playgroud)

database postgresql null

6
推荐指数
1
解决办法
452
查看次数

为什么使用存储过程而不是直接查询到db?

我的公司正在制定新政策,因为我的公司会获得一些国际标准的认证.该策略是,DBA不允许直接查询数据库,如:

select * from some_table, update some_table, etc. 
Run Code Online (Sandbox Code Playgroud)

我们必须使用存储过程来执行查询.

关于我在这里的最后一个问题:Postgres pl/pgsql错误:列"column_name"不存在

我想知道,我们是否必须为每个表或每个条件创建一个存储过程?有没有办法更有效地创建存储过程?

谢谢你的回答..

抱歉我的英语不好..:D

postgresql stored-procedures

5
推荐指数
1
解决办法
3731
查看次数

vaadin:表中一个字段中的多个链接

我想问一下vaadin的UI,即Table.如果我使用了这个组件,那么我必须使用这个命令创建一个字段:

userTable.addContainerProperty("Status", String.class, "Active");
Run Code Online (Sandbox Code Playgroud)

如果我想创建这个字段的链接,那么我必须这样做:

userTable.addContainerProperty("Action", Link.class, new Link("Remove", new ExternalResource("#")));
Run Code Online (Sandbox Code Playgroud)

我的问题是,上面的例子,只显示一个字段中的单个链接,即REMOVE Link.我想在该表的一个字段中创建两个链接.例如,在"Action"字段下面的EDIT和DELETE链接,我该怎么做?

vaadin

3
推荐指数
1
解决办法
2741
查看次数

Postgres pl/pgsql错误:列"column_name"不存在

我有一个如下所示的storerd程序,

CREATE FUNCTION select_transactions3(text, text, int)    
RETURNS SETOF transactions AS   
$body$   
DECLARE    
    rec transactions%ROWTYPE;  
BEGIN
    FOR rec IN (SELECT invoice_no, trans_date FROM transactions WHERE $1 = $2 limit $3  )    
    LOOP     
        RETURN NEXT rec;    
    END LOOP;  
END;   
$body$  
LANGUAGE plpgsql VOLATILE SECURITY DEFINER;
Run Code Online (Sandbox Code Playgroud)

当我执行这样的查询时:

select * from select_transactions3("invoice_no", '1103300105472',10);
Run Code Online (Sandbox Code Playgroud)

要么

select * from select_transactions3(invoice_no, '1103300105472',10);
Run Code Online (Sandbox Code Playgroud)

它得到这样的错误: 错误:列"invoice_no"不存在

但是当我尝试用这样的一个冒号执行时:

select * from select_transactions3('invoice_no', '1103300105472',10);
Run Code Online (Sandbox Code Playgroud)

结果是没有行.

我怎么能得到这样的数据:

  invoice_no   |       trans_date        
---------------+-------------------------
 1103300105472 | 2011-03-30 12:25:35.694
Run Code Online (Sandbox Code Playgroud)

谢谢 .

更新:如果我们想要显示我们想要显示的某一列表

CREATE FUNCTION select_to_transactions14(_col character …
Run Code Online (Sandbox Code Playgroud)

postgresql stored-procedures plpgsql

2
推荐指数
1
解决办法
4852
查看次数

使用equals和==进行比较

我有这样的条件:

try {
        History history = requestHelper.getHistory();
       if (!history.getInvoiceNo().equalsIgnoreCase("") || //String
                !history.getCcEmail().equalsIgnoreCase("") || //String
                !history.getHostAuthCode().equalsIgnoreCase("") || //String
                !history.getMerchantCategory().equalsIgnoreCase(null) || //String
                !history.getCcName().equalsIgnoreCase("") || //String
                !history.getCcPhone().equalsIgnoreCase("") || //String
                history.getBatchNo() != 0 || //int
                !history.getIpAddress().equalsIgnoreCase("") || //String
                !history.getTransactionStatus().equals(null)) { //char
            System.out.println(": : : FAILED GET HISTORY, NO PARAMETER SET!");
            requestHelper.getResultHelper().setLstHistoryTransaction(null);
       else {
            System.out.println(": : : SUCCESS GET HISTORY!");
            /* some command */
       }
} catch (Exception ex) {
        System.out.println(": : : ERROR QUERYING HISTORY TO DATABASE");
        ex.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

但是,当我不填充该参数的任何变量时,为什么它会像这样得到错误:

10:07:35,238 INFO [STDOUT] :::错误查询历史到数据库 …

java operators

-3
推荐指数
1
解决办法
182
查看次数