导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

急!!!如何对中文名数据库创建触发器!!!

swimmer2000 2003-12-23 05:16:56
create trigger deltrigger on 采购部门
For Delete
AS
update 采购部门 set id=id-(select count(*) from deleted)
where id>=(select top 1 id from deleted)
出现如下错误:
服务器: 消息 208,级别 16,状态 4,过程 deltrigger,行 1
对象名 '采购部门' 无效。
但是我用英文名就没问题,请各位解决,马上给分
...全文
6 点赞 收藏 36
写回复
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
swimmer2000 2003-12-24
up
回复
swimmer2000 2003-12-24
请各位回帖时注意,zjcxc(邹建)已经说出了问题所在,我的表是通过别的表改名后变成的,不知该如何解决
回复
j9988 2003-12-24
加上[]还不行,
你看看名称可能含有其它字符.
回复
swimmer2000 2003-12-24
我的表是通过别的表改名后变成的,不知该如何解决,谢谢
回复
Fanks 2003-12-24
我在sql2000下试了,正确,你用什么版本?
回复
--从你的情况来看:

select * from sysobjects where name=N'采购部门'
只出现了一个表,这个表只有字段,没有值


证明你没有创建采购部门这个表.触发器必须依赖表的存在.
所以你应该先创建[采购部门]这个表
回复
--在查询分析器中执行下面语句的结果是什么?

if exists(select 1 from sysobjects where name='采购部门' and objectproperty(id,'IsUserTable')=1)
begin
exec('
create trigger deltrigger on [采购部门]
For Delete
AS
update [采购部门] set id=id-(select count(*) from deleted)
where id>=(select top 1 id from deleted)
')
print '成功'
end
else
print '没有 [采购部门] 这个表'
回复
swimmer2000 2003-12-24
up
回复
swimmer2000 2003-12-24
已经搞定了,我自己犯了个基本的错误,谢谢大家,结帖
回复
那真没理由了.

企业管理器--右键你的表--所有任务--管理触发器
在出现的窗口中有什么内容
回复
swimmer2000 2003-12-24
数据库中的数据都还在
回复
那你的数据库中还能找到采购部门这个表吗?
回复
swimmer2000 2003-12-24
那应该怎么做?
回复
sdhdy 2003-12-24
我感觉你改oldname.mdf,oldname_log.ldf为newname.mdf,newname_log.ldf,不可取,因此可能导致了一系列问题
回复
sdhdy 2003-12-24
我建议你先把原来的数据库备份,然后以不同的名字再恢复到服务器上,用新恢复的数据库,这样应该就可以了!
回复
swimmer2000 2003-12-24
原来的trigger用drop trigger删除
1.用exec sp_renamedb 'oldname','newname'改名
2.企业管理器--数据库--右键--分离数据库
3.改oldname.mdf,oldname_log.ldf为newname.mdf,newname_log.ldf
4.企业管理器--数据库--右键--附加数据库

回复
将你做过的所有步骤详细说出来.
回复
swimmer2000 2003-12-24
up
回复
swimmer2000 2003-12-24
不可能没有权限,因为我用的是超级用户,就是因为改名称引起的
回复
swimmer2000 2003-12-24
问题和前面一样:
服务器: 消息 208,级别 16,状态 4,过程 deltri,行 2
对象名 '采购部门' 无效。
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告