由於訂戶表自動編號將附加1,即使發生事務錯誤並且回滾沒有幫助。然後,它不能在list_子表中添加信息,因爲該ID是不相符的,所以我用在mysql數據庫操作中這不是一個好的做法嗎?
ALTER TABLEID自動INC = 1
零下自動INC號碼,我把它放在catch塊沒有另一個try-catch。但這是常見的做法嗎?三江源
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
$conn->beginTransaction();
try {
$email = $_POST['Email'];
$FirstName = $_POST['FirstName'];
$LastName = $_POST['LastName'];
$query="INSERT INTO subscriber (Email,FirstName,LastName,CreateDate) VALUES (?,?,?,CURDATE())";
$stmt = $conn->prepare($query);
$stmt->bindParam(1, $email , PDO::PARAM_STR);
$stmt->bindParam(2, $FirstName, PDO::PARAM_STR);
$stmt->bindParam(3, $LastName, PDO::PARAM_STR);
$stmt->execute();
$conn->commit();
}
catch(PDOException $e)
{
$conn->rollBack();
$query="ALTER TABLE subscriber AUTO_INCREMENT = 1";
$stmt = $conn->prepare($query);
$stmt->execute();
die ($e->getMessage()."<a href='addSub.php'>Back</a>");
}
$conn->beginTransaction();
try {
$userID = $_SESSION['username'];
$query="INSERT INTO list_sub (SubID,ListID) VALUES ('',$_SESSION[ListID])";
$stmt = $conn->prepare($query);
$stmt->execute();
$conn->commit();
}
catch(PDOException $e)
{
$conn->rollBack();
die ($e->getMessage()."<a href='addSub.php'>Back</a>");
}
$conn = null;}
表:Subsciber
1 SubID int(11) No None AUTO_INCREMENT Change Drop More
2 Email varchar(100) utf8_general_ci No None Change Drop More
3 FirstName varchar(100) utf8_general_ci Yes NULL Change Drop More
4 LastName varchar(100) utf8_general_ci Yes NULL Change Drop More
5 CreateDate date No None Change Drop More
6 UpdateDate date Yes NULL Change Drop More Check All/Uncheck All With selected: Browse Change Drop Primary Unique Index
表:list_sub
1 SubID int(11) No None AUTO_INCREMENT Change Drop More
2 ListID int(11) No None Change Drop More
表:表
1 ListID int(11) No None AUTO_INCREMENT Change Drop More
2 ListName varchar(100) utf8_general_ci No None Change Drop More
3 FromName varchar(100) utf8_general_ci No None Change Drop More
4 ReplyTo varchar(100) utf8_general_ci No None Change Drop More
5 Subject varchar(100) utf8_general_ci No None Change Drop More
6 IsRemindSub tinyint(1) No None Change Drop More
7 IsRemindUnSub tinyint(1) No None Change Drop More
8 CreateDate date No None Change Drop More
9 Reminder varchar(100) utf8_general_ci No None Change Drop More
因爲數據庫不關心值是否是順序的,只是它們是唯一的。這就是爲什麼你也應該這樣做...... – 2012-02-24 03:56:33
但是一旦發生錯誤,我無法追加其他有效記錄。 table subscriber auto-inc no。 +1,table list_sub auto-inc no。提醒相同 – user782104 2012-02-24 04:01:31
這是可怕的糟糕的設計,它確實是。只需在第二張桌子上放下自動增量。你已經知道你想要的價值是什麼。你不應該依靠數據庫來爲你做對。 – 2012-02-24 04:21:26