SQL大全[2]
作者 佚名技术
来源 数据库编程
浏览
发布时间 2012-03-22
N SELECT 规则在上面的风格要好. CREATE VIEW 创建一个虚拟表(没有下层的存储) 以及相关的 ON SELECT 规则.系统不允许对视图进行更新,因为它知道在视图上没有真正的表.你可以创建一个可以更新的视图的幻觉, 方法是在视图上定义 ON INSERT,ON UPDATE,和 ON DELETE 规则 (或者满足你需要的任何上述规则的子集),用合适的对其它表的更新替换 在视图上更新的动作. 如果你想在视图更新上使用条件规则,那么这里就有一个补充∶ 对你希望在视图上允许的每个动作,你都必须有一个无条件的 INSTEAD 规则.如果规则是有条件的,或者它不是 INSTEAD, 那么系统仍将拒绝执行更新动作的企图,因为它认为它最终会在某种 程度上在虚拟表上执行动作.如果你想处理条件规则上的所由有用的情况,那也可以;只需要增加一个无条件的 DO INSTEAD NOTHING 规则确保系统明白它将决不会被调用来更新虚拟表就可以了.然后把条件规则做成非 INSTEAD; 在这种情况下,如果它们被触发,那么它们就增加到缺省的 INSTEAD NOTHING 动作中. 注意 为了在表上定义规则,你必须有规则定义权限. 用 GRANT 和 REVOKE 修改权限. 有一件很重要的事情是要避免循环规则. 比如,尽管下面两条规则定义都是 PostgreSQL 可以接受的, select 命令会导致 PostgreSQL 报告 一条错误信息,因为该查询循环了太多次: CREATE RULE bad_rule_combination_1 AS ON SELECT TO emp DO INSTEAD SELECT * FROM toyemp; CREATE RULE bad_rule_combination_2 AS ON SELECT TO toyemp DO INSTEAD SELECT * FROM emp; 下面这个对 EMP 的查询企图将导致 PostgreSQL 产生一个错误信息, 因为该查询循环了太多次: SELECT * FROM emp; 目前,如果一个规则包含一个 NOTIFY 查询,那么该 NOTIFY 将被 无条件执行 --- 也就是说,如果规则不施加到任何行上头,该 NOTIFY 也会被发出.比如,在 CREATE RULE notify_me AS ON UPDATE TO mytable DO NOTIFY mytable; UPDATE mytable SET name = ''foo'' WHERE id = 42; 里,一个 NOTIFY 事件将在 UPDATE 的时候发出,不管是否有某行的 id = 42.这是一个实现的限制,将来的版本应该修补这个毛病. 兼容性 SQL92 CREATE RULE语句是 PostgreSQL 语言的扩展. 在里没有CREATE RULE 语句. -------------------------------------------------------------------------------- CREATE SEQUENCE CREATE SEQUENCE Name CREATE SEQUENCE -- 创建一个新的序列发生器 Synopsis CREATE [ TEMPORARY | TEMP ] SEQUENCE seqname [ INCREMENT increment ] [ MINVALUE minvalue ] [ MAXVALUE maxvalue ] [ START start ] [ CACHE cache ] [ CYCLE ] 输入 TEMPORARY 或 TEMP 如果声明了这个修饰词,那么该序列对象只为这个会话创建, 并且在会话结束的时候自动删除.在临时序列存在的时候, 同名永久序列是不可见的(在同一会话里). seqname 将要创建的序列号名. increment INCREMENT increment 子句是可选的.一个正数将生成一个递增的序列, 一个负数将生成一个递减的序列.缺省值是一(1). minvalue 可选的子句 MINVALUE minvalue 决定一个序列可生成的最小值.缺省分别是递增序列为 1 递减为 -2^63-1. maxvalue 使用可选子句 MAXVALUE maxvalue 决定序列的最大值.缺省的分别是递 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于SQL大全[2]的所有评论