Clojure jdbc 创建复合主键
Posted
技术标签:
【中文标题】Clojure jdbc 创建复合主键【英文标题】:Clojure jdbc create compound primary key 【发布时间】:2018-05-15 19:54:21 【问题描述】:没有找到我需要的东西。我有一个需要复合主键 (postgresql) 的表,但没有看到这是如何使用 clojure.java.jdbc
完成的。
我正在努力
CREATE TABLE a_b (
f integer REFERENCES a,
g integer REFERENCES b,
PRIMARY KEY (f, g)
);
我尝试了很多方法,但要点是不知何故让:primary
和:key
替换下面的"PRIMARY KEY (a, b)"
。
(j/create-table-ddl :a_b [[:f "integer REFERENCES a"]
[:g "integer REFERENCES b"]
[:id "PRIMARY KEY (a, b)"]]) ;<=== this line
【问题讨论】:
【参考方案1】:有时绕过 DSL 并像这样传递原始 SQL 字符串会更容易:
(jdbc/db-do-commands raw-db-spec ["drop table if exists langs"
"drop table if exists releases"])
如果使用不常见或特定于特定数据库的功能,则尤其如此。
【讨论】:
嗯,好点子,虽然不是很令人满意:-P 我会用这个,但你会认为复合键很常见,尤其是在具有多对多关系的数据库中.【参考方案2】:似乎我找到了解决方案here。正确的做法是将我的[:id "PRIMARY KEY (f, g)"]
替换为
["CONSTRAINT id PRIMARY KEY (f, g)"]
如果其他人有类似的模式,我会留下这个问题。
【讨论】:
以上是关于Clojure jdbc 创建复合主键的主要内容,如果未能解决你的问题,请参考以下文章