我有一个数据库,其中有一个主表(我们称之为所有者)和几个包含资产的子表(如汽车、书籍等)。
例如:
Owner有列:owner_id, nameCars有列:owner_id (foreign key), brandBooks有列:owner_id (foreign key), title, author我的程序应该使用各种第三方图书馆来计算统计数据,例如有多少宝马车主还拥有一本哈利波特书籍。我想同时读取所有表中的所有行,然后用非sql代码进行分析。
我想使用单独的语句读取所有表Select * From X。我无法使用一个大连接,因为它会返回太多行((所有者 * 汽车 * 书籍)而不是(所有者 + 汽车 + 书籍))。联合也不会削减它,因为表包含不同类型的不同列。
我已经设定
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
Run Code Online (Sandbox Code Playgroud)
但我还是有一些问题。
如果我通过运行两个线程来对数据库施加压力,一个随机插入或删除,另一个读取,有时会得到不一致的结果,例如在读取和读取表Cars之间已被删除。OwnersCars
我有几个问题:
从多个表逐一读取时防止修改的正确方法是什么?在读取所有表之前,不得修改任何表。
我正在使用 SQL Server 2005(网络上)和 SQL Server 2005 Express(本地)。我可以同时显式地获取多个表的锁吗?
如果我针对本地 SQL Server Express 数据库运行,则无论我做什么都无法使其工作。如果我针对联网的 SQL Server 2005 数据库运行,我可以让它工作(需要付出一些努力)。SQL Server Express 是否支持事务隔离级别 SERIALIZABLE?我相信应该如此。差异可能是由于网络连接速度慢造成的,但我不知道。
在我的本地数据库上,我无法阻止读取之间的修改。也就是说,一个线程随机删除一个随机所有者(首先是汽车,然后是书籍,然后是所有者)或插入一个新所有者(插入所有者,插入 2 辆车,插入 2 本书)。另一个线程正在阅读使用:
Begin Tran
Select owner_id …Run Code Online (Sandbox Code Playgroud)我通过按Cx来开发了一个emacs pinky的案例.理想情况下,我想使用空格键而不是控制作为前缀命令,因为用拇指按住更容易.按下和释放空间仍应添加空格,但同时按下Space + x应该可以绑定到命令.例如:
(local-set-key (kbd "SPC-s") 'search-forward)
Run Code Online (Sandbox Code Playgroud)
有没有人对如何实现这一点有任何想法?是否有可能只使用elisp或者我必须修改emacs源并编译我自己的版本?
我更喜欢一种独立于操作系统的解决方案,因为我在Windows和Linux上使用emacs.
编辑:我尝试过key-chord.el,它在某些情况下有所帮助,但并非所有(Cx Cs).我更喜欢一种次要模式,例如hold-space-is-control或holding-space-is-meta
编辑:感谢所有的回复.我目前正在使用键和弦将许多C-*命令映射到j*或f*,具体取决于if是左手还是右手键.例如,我用jb替换Cx b.它适用于您通常键入一次的所有命令,但不适用于重复使用的命令(例如前向或后向段落).它是迄今为止最好的跨平台解决方案,因为它只需要自定义的.emacs和key-chord.el文件.我更喜欢一种解决方案,它需要更少的重新映射,并降低键入"fyi"和获得"<yank> i"的风险.我相信使用空间可以工作,但我不太了解emacs的技术细节,使其工作.
我已经考虑过用Ctrl替换Caps-Lock或Alt,但这只对左小指有帮助.许多常见命令使用右小指(Cx,Cs,Cw,Cy)执行.