在Oracle中,可以仅刷新部分数据.但是在PostgreSQL中,自9.3(现在的版本)支持物化视图,这不是很长.所以我想知道:是否可以刷新PostgreSQL 9.3中物化视图中的部分数据?如果是的话,该怎么办?
我经常使用integer = ANY(integer[])语法,但现在任何运算符都不起作用.这是我第一次使用它来比较标量和从CTE返回的整数,但我认为这不应该导致问题.
我的查询:
WITH bar AS (
SELECT array_agg(b) AS bs
FROM foo
WHERE c < 3
)
SELECT a FROM foo WHERE b = ANY ( SELECT bs FROM bar);
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它会抛出以下错误:
错误:运算符不存在:integer = integer []:WITH bar AS(SELECT array_agg(b)AS bs FROM foo WHERE c <3)SELECT a FROM foo WHERE b = ANY(SELECT bs FROM bar)
这个SQL小提琴的细节.
那么我做错了什么?
与表或序列不同,无法通过pg_class找到用户定义的函数.上有问题是如何找到的所有功能的列表中删除或授予他们,而是如何找到一个单独的功能(具有已知的名称和参数类型)是不言自明从他们.那么如何找到一个函数是否存在?
编辑:我想以自动方式在函数中使用它.哪种解决方案性能最佳?陷阱错误是非常昂贵的,所以我想对我来说最好的解决方案是没有将错误转换为错误的额外步骤,但我可能在这个假设中错了.
我知道这个问题可以被看作是一个重复的这一个.我甚至有几乎相同的配置(PostgreSQL 9.1.3,pgAdmin III 1.14.3,32位Windows).有什么不同,我问一个新问题的原因是我的PgAdmin总是没有崩溃(只是大部分)并且问题的原因是不同的 - 在链接问题中问题是缺少adminpack,但是我安装了adminpack它运作良好,因此链接问题的答案对我不起作用.
你有什么想法可以解决问题吗?
编辑:PgAdmin不会在其他场合崩溃(好吧,除非我做一些明显值得崩溃的东西),只是在尝试打开SQL查询窗口时.随着时间的推移,情况越来越糟,现在几乎"总是".问题不在于"特定于连接" - 对于不同的服务器连接,崩溃的频率是相同的.
编辑2:我重新安装了PgAdmin,没有任何改变.我开始怀疑PostgreSQL 9.1.3甚至是PostGIS 2.0.1的问题.
有一个类似的问题,但它是模棱两可的,并且接受的答案表明这个问题与我的略有不同.
如何查找不属于任何扩展程序(如PostGIS)的用户定义函数?链接问题的答案提供了一个返回大多数PostGIS函数的查询(噪音为我的目的),我不太清楚它是否足以改变它只返回我的函数(缺乏详细解释为什么它的工作方式和方式如何更改设置).
现在我没有C函数,我的所有函数都在模式公共中 - 您可以使用这个事实,但要明确如何释放这些约束.如果确切的扩展列表很重要,那么现在假设只是PostGIS,但是如果从代码中不明显的话,可以解释如何将其他列表添加到列表中.
在我的触发程序中,我使用RAISE EXCEPTION作为消息.我对简单消息没有任何问题,但如果我想给用户一些更复杂的反馈,我就会面临一个问题:连接运算符在RAISE EXCEPTION语句中不起作用.
首先,我试过这个:
CREATE OR REPLACE FUNCTION hlidej_datum_kon() RETURNS trigger AS $$
DECLARE
od date;
BEGIN
SELECT a.datum_od FROM akce AS a WHERE a.kod_akce = (
SELECT b.kod_akce FROM sj AS b WHERE b.kod_sj = NEW.kod_sj
) INTO od;
IF NEW.datum < od THEN
RAISE EXCEPTION 'Kontext nemohl být odkryt p?ed za?átkem akce ('||TO_CHAR(od)||')!'
ROLLBACK;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
没工作.所以我试着将整个文本放到一个文本变量中,但是我没有找到如何将变量的内容放到异常语句中,以便将其打印为消息.
我的问题是:如何在PostgreSQL触发器函数中打印包含变量的消息?
为了完整起见,这是我的触发器:
CREATE TRIGGER hlidej_datum_kon
AFTER INSERT OR UPDATE ON kontext
FOR EACH ROW …Run Code Online (Sandbox Code Playgroud) 我有一个包含地点的数据库,我需要在我的网页中显示从任何地方到其他地方的距离.将距离存储在某处将节省大量工作(加载它们应该比重新计算它们更容易).但是如何保存距离的方阵呢?每次插入新行时创建一个新列似乎不是一个好的解决方案,但我没有找到任何更好的解决方案(尽管我可以想到解决方法,例如计算10或20个最近距离并假设我会很少需要更多).
什么是在PHP/MySQL中保存变量(和增长)大小的方形表的最佳方法?或者没有好的解决方案,我的(或其他一些)解决方法更好?
我的数据库使用utf8_czech_ci排序规则,我也想将它设置为我的数据库连接.如果我不想要默认值utf8_general_ci,Mysqli_set_charset将不会让我设置排序规则.这里建议先通过mysqli_set_charset设置的字符集,然后通过Set名称设置整理.所以我做了,连接整理仍然是utf8_general_ci.
编辑:现在我基本上使用YourCommonSense建议的代码:
$spojeni=mysqli_connect('mysql01','username','password', 'my_database');
if (!$spojeni) die('Nepoda?ilo se p?ipojit k databázi.');
mysqli_set_charset($spojeni,'utf8');
mysqli_query($spojeni, "SET COLLATION_CONNECTION = 'utf8_czech_ci';");
Run Code Online (Sandbox Code Playgroud)
但是,我只是面临非法混合排序错误.在通过mysqli_get_charset()我测试我的连接校对时发现我的校对是"utf8_general_ci",而不是应该是'utf8_czech_ci'.这意味着原来接受的答案因某些神秘的原因而停止工作.我在localhost和托管服务器上测试了它,甚至在声明数据库之后,所以偶然更改整理的一些错误似乎是不可能的.
那么如何以其他方式改变整理呢?
我以前的代码,出于存档的原因:
$spojeni=mysqli_connect('mysql01','username','password');
if (!$spojeni) die('Nepoda?ilo se p?ipojit k databázi.');
mysqli_query($spojeni, "USE my_database");
mysqli_set_charset($spojeni,'utf8');
mysqli_query($spojeni, "SET NAMES 'utf8' COLLATE 'utf8_czech_ci';");
Run Code Online (Sandbox Code Playgroud)
EDIT2:show variables like "%collation%";显示collation_connectionas 的值utf8_general_ci; 其他校对变量设置为utf8_czech_ci.当Adminer运行此命令,我看到utf8_czech_ci的collation_connection只有当我经过任何的运行它SET NAMES或SET COLLATION_CONNECTION(见上确切的语法我的代码的最后几行).当我show variables从php代码(通过mysqli_query)运行时,它显示为utf8_czech_ci,但是比较从表中选择的值和客户端设置的值仍然会抱怨非法混合排序.
详情请参阅我的 …
我的问题是将div放在"动态图片"下,并在动态图片下方的div下面有动态内容:
jsfiddle css类准备填写:
HTML:
<div id="wallDetailContent">
<section id="wallDetailMessage" style="width 100%">
<img class="wallDetailPicture" src="http://web.scott.k12.va.us/martha2/dmbtest.gif">
<div style="max-width:70%;">blah gik sig en tur, og købte blah med hjem</div>
</section>
<section class="belowPicture">
<p class="wallByDate"> 20140126220550</p>
<p class="wallByBy"> af </p>
<p class="wallByName"> Anders </p>
</section>
<section class="belowBelowPicture">
content (should be dynamic, able to fill all the height it need downwards.)
</section>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.wallDetailPicture{
top: 5px;
right : 5px;
position: absolute;
display:box;
width:auto;
height:auto;
max-width:30%;
max-height: 200px;
}
.wallByName{
font-weight: bold !important; …Run Code Online (Sandbox Code Playgroud)