Clojure jdbc创建复合主键

时间:2018-05-15 19:54:22

标签: postgresql jdbc clojure

找不到我需要的东西。我有一个表需要复合主键(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

2 个答案:

答案 0 :(得分:2)

有时绕过DSL更容易,只传递原始SQL字符串,如下所示:

 (jdbc/db-do-commands raw-db-spec ["drop table if exists langs"
                                   "drop table if exists releases"])

如果使用不常见或特定于特定数据库的功能,则尤其如此。

答案 1 :(得分:0)

似乎我找到了解决方案here。正确的方法是用[:id "PRIMARY KEY (f, g)"]替换

["CONSTRAINT id PRIMARY KEY (f, g)"]

我会留下问题,以防其他人有类似的模式。