一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。
在创建表的时候指定外键约束:
1 2 3
| CONSTRAINT 外键约束名 FOREIGN KEY (column1,column2,... column_n) REFERENCES 外键依赖的表 (column1,column2,...column_n) ON DELETE CASCADE
|
在创建表后增加外键约束:
1 2 3 4 5
| ALTER TABLE 表名 ADD CONSTRAINT 外键约束名 FOREIGN KEY (column1, column2,...column_n) REFERENCES 外键所依赖的表 (column1,column2,...column_n) ON DELETE CASCADE;
|
顺便记录yii框架使用过程中发现的一个疑问,以后解决:
在调用存储过程时,delete()中使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public function actionDelete($id) {
$username=Yii::$app->user->identity->username; $model = $this->findModel($id); if (!$model->load(Yii::$app->request->post())) {
$command= Yii::$app->db ->createCommand('call proc_delete(:p0,:p1)') ->bindValues([":p0" =>$model->catid,":p1"=>$username]); $res=$command->execute(); if($res>=0) { return $this->redirect(['index']); } } return $this->redirect(['index']); }
|
update()中使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public function actionUpdate($id) { $model = $this->findModel($id); if ($model->load(Yii::$app->request->post())) {
$command= Yii::$app->db ->createCommand('call proc_update(:p0,:p1)') ->bindValues([":p0" =>$model->catid, ":p1" =>$model->price]); $res=$command->execute(); if($res>=0) { return $this->redirect(['view', 'id' => $model->catid]); } } return $this->render('update', [ 'model' => $model, ]); }
|
帮jz同学看了很久他的语句,才发现if条件语句中,delete()和update()差了一个感叹号,但具体原因现在先不探寻了。