当我使用重写规则将插入一个表拆分为两个其他表的插入时,其中一个插入值具有默认的nextval('some_sequence'),两个表具有相同的序列,则插入的默认值在两张桌子.这可能是由于重写规则的简单文本替换.我曾希望首先解析默认值,然后将相同的值写入两个表.
这是一个例子(正如你可能猜到的,我正在尝试使用规则实现特化/泛化):
-- first and third commands can be skipped if id is defined as serial
create sequence parents_id_seq;
create table Parents(
id integer default(nextval('parents_id_seq')) primary key,
type varchar(50) not null check(type in ('Child1', 'Child2')),
unique (id, type),
attribute1 varchar(50) not null unique check(length(attribute1) > 0)
);
alter sequence parents_id_seq owned by parents.id;
Run Code Online (Sandbox Code Playgroud)
特定于第一类儿童的数据保留在
create table Partial_Children1(
id integer default(nextval('parents_id_seq')) primary key,
type varchar(50) not null check(type = 'Child1'),
foreign key (id, type) references Parents(id, type),
attribute2 varchar(50) not null …
Run Code Online (Sandbox Code Playgroud) 不小心我在错误的目录中调用了"svn import ...".是否有一种明智的方法来消除这个错误?
谷歌搜索我没有找到任何有用的答案,并且我在stackoverflow上找到的最接近我的问题是将正确的数据导入到错误的位置,而我将错误的数据导入到正确的位置.
并且:存储库不是新的,因此删除它是不可能的.
如果我无法撤消版本控制系统中的操作,那将是一种讽刺.那么有人可以帮助我吗?(谢谢!)
编辑:我将我的存储库存储在Berkley数据库中,即它在文件系统中.查看所有文件/目录的修改日期以及刚刚修改过的文件的内容,我能够找出除了一件事之外要做的事情:有人知道txn-current的文件是什么吗?我猜它与事务处理有关,但其内容的含义是什么(长度是2个字节)?
编辑2:谢谢你们两个有用的答案.我接受了马丁的答案,因为它应该提供正确的方法(因为我在时间压力下我只是删除了一些文件,如我在第一个EDIT中暗示的那样忽略了txn-current的内容并且直到现在都很好).但请查看Wim在评论中给出的链接!
在第二章最后一章为少数Monads更多非常好的教程"为了一个伟大的好事学习你一个Haskell",作者定义了以下monad:
import Data.Ratio
newtype Prob a = Prob { getProb :: [(a,Rational)] } deriving Show
flatten :: Prob (Prob a) -> Prob a
flatten (Prob xs) = Prob $ concat $ map multAll xs
where multAll (Prob innerxs,p) = map (\(x,r) -> (x,p*r)) innerxs
instance Monad Prob where
return x = Prob [(x,1%1)]
m >>= f = flatten (fmap f m)
fail _ = Prob []
Run Code Online (Sandbox Code Playgroud)
我想知道在Haskell中是否有可能专门化绑定运算符">> ="以防monad中的值属于像Eq这样的特殊类型类,因为我想将属于同一值的所有概率相加.