ユニーク制約 - grails
2013/10/06
grails
mysql
grailsです。
数年前、一度、チャレンジしかけたんですけど、何かの記事で、パフォーマンスがわるいとかなんとかあって、だったらやめようと思っちゃたんですよね。あの頃からさわってればよかったと後悔してます。
いま、実際に使っていくにはどんな流れでいいのかなーと考えています。
grailsを薦める記事とかみると、まあ、いいことしか書いてないようにみえて、もっと苦労する話はないかなーと思ってます。
目下の調査しているのはドメインクラスからどういうふうにテーブルが作成されていくのかなーということです。
制約でユニーク制約を設定する方法です。
項目ひとつにユニーク制約つけるのは簡単で、
username unique: true
で、いいのはわかったのですが、グループで制約つけるやり方がいまいちわからない。とくに結論はないですが。。。
使ったバージョンは2.2.3
参考は
unique - The Grails Framework 2.2.4
なんとなく実験
こんなドメインクラスつくってみました。
package test
class Aaa {
String bbb
int ccc
Date createTime
static constraints = {
bbb (unique:['bbb','ccc'])
}
}
それで、つくられたテーブルはこんな
mysql> desc aaa;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| version | bigint(20) | NO | | NULL | |
| bbb | varchar(255) | NO | | NULL | |
| ccc | int(11) | NO | MUL | NULL | |
| create_time | datetime | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
create tableはこんな感じ
CREATE TABLE `aaa` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`version` bigint(20) NOT NULL,
`bbb` varchar(255) NOT NULL,
`ccc` int(11) NOT NULL,
`create_time` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ccc` (`ccc`,`bbb`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
ユニーク制約はとりこめてるようなんだけど、キーの名前の付け方がいまいちよくわかってないです。
問題ないのかな。
: