sqlserver中不用COMMIT吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver中不用COMMIT吗相关的知识,希望对你有一定的参考价值。

使用的 只不过当你没有特别显示指定 begin tran 和commit 的时候,就是隐式事务,每句一commit这样 参考技术A 不用 sqlserver创建的存储过程需要commit 参考技术B BEGIN TRAN:设置起始点。
COMMIT TRAN:使事务成为数据库中永久的、不可逆转的一部分。
ROLLBACK TRAN:本质上说想要忘记它曾经发生过。
SAVE TRAN:创建一个特定标记符,只允许部分回滚。

示例(mssql 自带的数据库pubs)

下例更改分给 The Gourmet Microwave
的两位作者的版税。数据库将会在两个更新间不一致,因此必须将它们分组为用户定义的事务。
BEGIN TRANSACTION royaltychange
UPDATE titleauthor
SET royaltyper = 65
FROM titleauthor, titles
WHERE royaltyper = 75
AND titleauthor.title_id = titles.title_id
AND title = 'The Gourmet Microwave'
UPDATE titleauthor
SET royaltyper = 35
FROM titleauthor, titles
WHERE royaltyper = 25
AND titleauthor.title_id = titles.title_id
AND title = 'The Gourmet Microwave'
SAVE TRANSACTION percentchanged

/*
After having updated the royaltyper entries for the two authors, the
user inserts the savepoint percentchanged, and then determines how a
10-percent increase in the book's price would affect the authors' royalty earnings.
*/

UPDATE titles
SET price = price * 1.1
WHERE title = 'The Gourmet Microwave'
SELECT (price * royalty * ytd_sales) * royaltyper
FROM titles, titleauthor
WHERE title = 'The Gourmet Microwave'
AND titles.title_id = titleauthor.title_id
/*
The transaction is rolled back to the savepoint
with the ROLLBACK TRANSACTION statement.
*/

ROLLBACK TRANSACTION percentchanged
COMMIT TRANSACTION

/* End of royaltychange. */本回答被提问者和网友采纳
参考技术C 由于SQL SERVER 中的INSERT是默认隐式提交的事务。
必须显式如大力说的那呀。

不同与ORACLE
参考技术D 用啊
看你的业务逻辑是否用得到

git 不用clone整个远程仓库,只把特定的commit给fetch下来的方案

一个麻烦点就是,我需要阅读一个大点的开源项目,远程仓库的代码量太庞大了,如果我需要git reset --hard [commit sha1]感兴趣的commit快照,就首先得git clone整个远程仓库,

时间需要等待太长,而且网络一旦有问题还会功亏一篑。所有有没有一种只拉取远程仓库中的某个commit呢?有。命令行如下:

 

# make a new blank repository in the current directory
git init

# add a remote
git remote add [nick_name] [url://to/source/repository]

# fetch a commit (or branch or tag) of interest
# Note: the full history of this commit will be retrieved
git fetch [nick_name] <sha1-of-commit-of-interest>

# reset this repository‘s master branch to the commit of interest
git reset --hard FETCH_HEAD


references:
https://stackoverflow.com/questions/14872486/retrieve-specific-commit-from-a-remote-git-repository
https://stackoverflow.com/questions/14370157/git-fetch-a-specific-commit-by-hash
https://stackoverflow.com/questions/3489173/how-to-clone-git-repository-with-specific-revision-changeset#

以上是关于sqlserver中不用COMMIT吗的主要内容,如果未能解决你的问题,请参考以下文章

如何将java程序里的一段连接mysql的语句转为连接sqlserver语句。连接的是sqlser

git commit前必须rebase吗

php怎么连接sql server 2012

SqlServer中嵌套事务使用--事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配 --根本问题

SQLServer 数据库结构

OracleMySQL和Sqlserver的事务管理分页和别名的区别