我只是爲了好玩而讓自己成爲一個臉譜/嘰嘰喳喳組合的東西,但我並不是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 –
感謝您的幫助! –