Groupsという名前のテーブルがありますprimary key = Pkey
。Group には再帰的な関連がありますParent_groupはPkey を参照します。Parent_Group をリレーションGroupsの外部キーとして定義しました。私はMYSQLを使用しています。
テーブルベース:グループ
+------+-----------+------------+----------+---------------+
| PKey | GroupName | Region | Role | Parent_Group |
+------+-----------+------------+----------+---------------+
| k1 | RootGroup | Jaipur | Admin | NULL |
+------+-----------+------------+----------+---------------+
| k2 | G2 | Alwar | Admin | k1 |
+------+-----------+------------+----------+---------------+
| k3 | G3 | Jaipur | Guest | k3 |
+------+-----------+------------+----------+---------------+
| k4 | G4 | Alwar | Operator| k2 |
+------+-----------+------------+----------+---------------+
テーブルを作成するためのクエリ:
CREATE TABLE IF NOT EXISTS `groups`
(
`PKey` varchar(64) NOT NULL,
`group_name` varchar(64) DEFAULT NULL,
`Region` varchar(128) NOT NULL,
`Role` varchar(128) NOT NULL,
`parent_group` varchar(64) DEFAULT NULL,
PRIMARY KEY (`Pkey`),
KEY `FK_ParentGroup_ChildGroup` (`parent_group`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
このテーブルは、タプル Groups
が 1 つだけのアプリケーションと共に出荷されます。RootGroup
そしてI want to impose two constraints on table?
、次のように:
Parent_group
新しく挿入された行は、列に NULL 値を持つことはできませんRootGroup
行を削除できないよう に制約を追加します。
知りたいのですが、SQL 内で可能かどうか (yes
どのように?)、またはバックエンド システムで処理する必要がありますか?
トリガーは使えますか?
編集:新しい挿入タプルがそれ自体を指すことができないように、テーブルに追加の制約を課したい。例えば
mysql> INSERT INTO Employee VALUES ("8", "H", "BOSS", "8");
Query OK, 1 row affected (0.04 sec)
失敗するべきですか?