其實我想到了這樣一個場景:
假設我們正在管理一個存儲很多書籍的圖書館。
我們的圖書館網絡應用程序允許用戶將書籍添加到書架上。
該數據庫有兩個表格,書籍和作者。模式如下:
無論如何,在提交TRANSACTION之前獲取主鍵?
CREATE TABLE Books
(book_id int NOT NULL IDENTITY(1,1),
book_name nvarchar(100) NOT NULL,
author_id int NOT NULL,
PRIMARY KEY (book_id),
FOREIGN KEY (author_id) REFERENCES Authors(author_id),)
CREATE TABLE Authors
(author_id int NOT NULL IDENTITY(1,1),
author_name nvarchar(100) NOT NULL,
PRIMARY KEY (author_id))
假設請求將獲得作者姓名和書名以將書籍存儲在書架上。
如果沒有這樣的作者,它會自動爲作者創建條目。但是我希望這個操作是一個事務(如果出現問題,我希望一切回滾)
在結束事務之前,我可以獲得主鍵嗎?
$server_name = "s3";
$connection_info = array("Database"=>"bis_testing", "UID"=>"bisuser", "PWD"=>"111");
$conn = sqlsrv_connect($server_name, $connection_info);
sqlsrv_begin_transaction($conn)
$sql = "INSERT INTO Author(author_name)
values
(?);";
$author_name = 'Dr. Pro';
$stmt1 = sqlsrv_query($conn, $sql, array($brand_name));
**// get author primary key to $author_pk**
$sql = "INSERT INTO Book(book_name, author_id)
values
(?,?);";
$book_name = 'Writing that works';
$stmt2 = sqlsrv_query($conn, $sql, array($book_name, $author_pk));
if ($stmt1 && $stmt2) {
echo 'done';
}
如果不是,我應該怎麼做這份工作?
刪除了MySQL標籤。在這個問題中沒有MySQL – Phil 2013-04-05 04:43:04
我不是一個SQL Server的人,但嘗試這樣的事情? http://stackoverflow.com/questions/7917695/sql-server-return-value-after-insert – Sam 2013-04-05 05:07:34