我只是为了好玩而让自己成为一个脸谱/叽叽喳喳组合的东西,但我并不是100%确定使用JDBC东西的一些语义。我不确定如何将字段设置为外键或如何限制varchar字段中的字符数量。Postgres和Clojure中的外键和字符限制JDBC
我的代码(带注释显示在我需要帮助)如下
(ns twitface.models.migration
(:require [clojure.java.jdbc :as sql]))
(defn create-tables []
(sql/with-connection (System/getenv "DATABASE_URL")
(do
(sql/create-table :users
[:id :serial "PRIMARY KEY"]
[:email :varchar "NOT NULL"]
[:password :varchar "NOT_NULL"]
[:full-name :varchar "NOT NULL"]
[:pref-name :varchar]
[:created_at :timestamp "NOT NULL" "DEFAULT CURRENT_TIMESTAMP"])
(sql/create-table :relations
[:id :serial "PRIMARY KEY"]
[:relating-user :numeric] ; foreign key
[:related-user :numeric] ; foreign key
[:status :varchar])
(sql/create-table :posts
[:id :serial "PRIMARY KEY"]
[:user :numeric "NOT NULL"] ; foreign key
[:destination-user :numeric "NOT NULL"] ; foreign key
[:message :varchar "NOT NULL"] ; 180 char limit
[:created_at :timestamp "NOT NULL" "DEFAULT CURRENT_TIMESTAMP"])
(sql/create-table :comments
[:id :serial "PRIMARY KEY"]
[:user :numeric "NOT NULL"] ; foreign key
[:message :varchar "NOT NULL"] ; 180 char limit
[:created_at :timestamp "NOT NULL" "DEFAULT CURRENT_TIMESTAMP"]))))
任何帮助,将不胜感激!提前致谢!
谢谢!一个小问题:您对related_user字段使用了串行数据类型。这不会导致它只选择它自己的号码吗?或者是因为它引用了另一个序列字段,它就是这样吗? –
是的,请查看postgresql文档:http://www.postgresql.org/docs/8.3/static/tutorial-fk.html –
感谢您的帮助! –