小随笔——20171204
♠ ♥ ♦ ♣ 该文章仅为平时的笔记,非商用,如有侵权请联系博主删除 ♣ ♦ ♥ ♠
目录:
♠ __ (数据库)数据库级联删除;
♥ __ (PHP)PDO数据插入异常捕获;
环境:win7
相关问题笔记:
♠ __ (数据库)数据库级联删除:
问题描述:当一个学生表有字段“student_id”,成绩表也有字段“student_id”,成绩表的“student_id”为成绩表的外键,此时,如果要删除学生表的“student_id”会提示错误,删除失败。
其中一个解决办法是:级联删除。
1、第一种情况,表已经建好的,这样修改:
ALTER TABLE SC
ADD CONSTRAINT main_id_cons
FOREIGN KEY (student_id) REFERENCES Student(student_id) ON DELETE CASCADE; /*SC为成绩表,Student为学生表*/
2、第二种情况,建(成绩)表过程:
Create table SC
(
SC_id int primary key, /*成绩表编号*/
student_id varchar(10) not null, /*学生编号*/
class_id varchar(10) not null, /*课程编号*/
score tinyint /*成绩*/
foreign key (student_id) references Student(student_id) ON Delete cascade /*级联删除语句 */
)
♥ __ (PHP)PDO数据插入异常信息捕获:
向数据库插入一条数据时,若插入错误,需要获知错误的信息。
1、PDO连接数据库(以MSSQL为例)
try{
$db = new PDO("sqlsrv:YourServerName;Database=activity_online","sa","password");
}catch(PDOException $e){
echo "ERROR:".$e->getMessage();
}
2、设置错误模式
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
3、插入操作
try{
$result = null;
$sql = "INSERT INTO Activity VALUES('098','*','*','*','*')";
$result = $db->exec($sql);
}catch (PDOException $e){
echo 'error'.$e->getMessage();
}
4、返回插入错误信息
“errorSQLSTATE[23000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]违反了 PRIMARY KEY 约束“PK__Activity__C697D363FED96916”。不能在对象“dbo.Activity”中插入重复键。重复键值为 (098)。”
5、处理错误,完成
仅作为日常笔记使用,有点简单,大家有什么想法也可以交流哟~