プログラマメモ2 - programmer no memo2

ユニーク制約 - grails 2013/10/06

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

ユニーク制約はとりこめてるようなんだけど、キーの名前の付け方がいまいちよくわかってないです。

問題ないのかな。




: