我在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) 我的公司正在制定新政策,因为我的公司会获得一些国际标准的认证.该策略是,DBA不允许直接查询数据库,如:
select * from some_table, update some_table, etc.
Run Code Online (Sandbox Code Playgroud)
我们必须使用存储过程来执行查询.
关于我在这里的最后一个问题:Postgres pl/pgsql错误:列"column_name"不存在
我想知道,我们是否必须为每个表或每个条件创建一个存储过程?有没有办法更有效地创建存储过程?
谢谢你的回答..
抱歉我的英语不好..:D
我想问一下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链接,我该怎么做?
我有一个如下所示的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) 我有这样的条件:
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] :::错误查询历史到数据库 …