| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1021 人关注过本帖
标题:保存点不会用
只看楼主 加入收藏
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
结帖率:96.55%
收藏
已结贴  问题点数:20 回复次数:13 
保存点不会用
程序代码:
BEGIN TRANSACTION;
INSERT INTO ContactReason VALUES ('1001', '////');
INSERT INTO ContactReason VALUES ('1002', '????');
SAVE TRANSACTION savapoint_cc;
DELETE ContactReason WHERE ContactReason = 'yxf';
ROLLBACK TO SAVEPOINT savapoint_cc;
DML都是没有问题的
就是想问下最后那句怎么用
2011-05-16 14:58
lxd0980
Rank: 7Rank: 7Rank: 7
来 自:湖南长沙
等 级:黑侠
帖 子:166
专家分:505
注 册:2011-3-27
收藏
得分:20 
ROLLBACK TO SAVEPOINT savapoint_cc;
这一句是程序运行之前,就搞了一个保存点.当你执行上面的语句时,就会自动返回到你的设置的保存点的状态.
收到的鲜花
2011-05-16 18:28
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 
回复 2楼 lxd0980
/*------------------------
BEGIN TRANSACTION;
INSERT INTO ContactReason VALUES ('1001', '////');
INSERT INTO ContactReason VALUES ('1002', '????');
SAVE TRANSACTION savapoint_cc;
DELETE ContactReason WHERE ContactReason = 'yxf';
ROLLBACK TO SAVEPOINT savapoint_cc;
------------------------*/
消息 156,级别 15,状态 1,第 6 行
关键字 'TO' 附近有语法错误。
2011-05-16 18:50
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 
程序代码:
/*------------------------
INSERT INTO ContactReason VALUES ('1001', '////');
INSERT INTO ContactReason VALUES ('1002', '????');
DELETE ContactReason WHERE ContactReason = 'yxf';
------------------------*/

(1 行受影响)

(1 行受影响)

(0 行受影响)
是不是ROLLBACK这句写错啦???
2011-05-16 18:54
lxd0980
Rank: 7Rank: 7Rank: 7
来 自:湖南长沙
等 级:黑侠
帖 子:166
专家分:505
注 册:2011-3-27
收藏
得分:0 
我不知道你要做什么, 反正我所知道的我是;  在你进行某项操作时,可以害怕操作失误, 那么你一开始就创建一个保存点,我叫它闪存, 再进行操作你想要你操作的,当你感觉操作错误的时候,你就可以使用这个保存点来恢复你到设置保存点的状态了, (打个比方,我们电脑装系统,装完之后,会搞一个备份,(呵呵,至少我是这样搞的),当你的系统运行很慢的时候,你就可以使用这个备份了,进行恢复,恢复到你装系统时的状态.)
不知道我说清楚了没有了.
2011-05-16 19:08
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 
首先:我可以理解

但是在我的
图片附件: 游客没有浏览图片的权限,请 登录注册
上面运行 就是有错误
现在不明白 为什么会有错误
2011-05-16 19:52
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 
像这样:
程序代码:
SELECT * FROM ContactReason;

BEGIN TRAN;
INSERT INTO ContactReason VALUES ('123', 'yyy');
SELECT * FROM ContactReason;
ROLLBACK;

SELECT * FROM ContactReason;
执行的结果:

图片附件: 游客没有浏览图片的权限,请 登录注册


这样子可以正确

所以现在就是问1楼的怎么会有错误  不知道现在说清楚没有
2011-05-16 19:56
lxd0980
Rank: 7Rank: 7Rank: 7
来 自:湖南长沙
等 级:黑侠
帖 子:166
专家分:505
注 册:2011-3-27
收藏
得分:0 
看来你是需要INSERT 触发器的知识.建议看看... 一两句说不清.
2011-05-16 21:28
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 
。。。。
从头来过吧
假设什么都ok
现在在某个数据库当中
USE <database_name>
GO
存在ContactReason这样一张表
CREATE TABLE ContactReason
(
    ContactReason NVARCHAR(10),
    Description NVARCHAR(40),
    CONSTRAINT pk_contactreason PRIMARY KEY (ContactReason)
);
声明:上面标色的都没有问题 包括下面的DML语句也是没有问题的(即单独拿出来时可以的)

现在要问的问题:
第一 下面这段代码中有没有错误(主要是最后那句) ?
第二  如果没有错误是不是很有可能是我的运行环境不支持这样子的写法 ?
总结下: 如果不是语句本身的问题 引起我上面截图上的错误的可能性是什么?

BEGIN TRANSACTION;
INSERT INTO ContactReason VALUES ('1001', '////');
INSERT INTO ContactReason VALUES ('1002', '????');
SAVE TRANSACTION savapoint_cc;
DELETE ContactReason WHERE ContactReason = 'yxf';
ROLLBACK TO SAVEPOINT savapoint_cc;
2011-05-16 22:01
lxd0980
Rank: 7Rank: 7Rank: 7
来 自:湖南长沙
等 级:黑侠
帖 子:166
专家分:505
注 册:2011-3-27
收藏
得分:0 
说句实话,我找了一下资料,没有找到关于SQL创建保存点的方法。按理你的思想,你可以用触发器实现它。
2011-05-17 11:19
快速回复:保存点不会用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019898 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved