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

还是触发器的问题

angleoldhen 2007-12-17 05:30:40
asp.net2.0:

protected void Button1_Click(object sender, EventArgs e)
{
string connstring = ConfigurationManager.ConnectionStrings["qztvoaConnectionString"].ToString();
SqlConnection dbConnection = new SqlConnection(connstring);
dbConnection.Open();
string query = "insert into ttapeborrow(tapecode,borrowman,borrowdate,borrowreason,operateman,operatedate) values(@tapecode,@borrowman,@borrowdate,@borrowreason,@operateman,@operatedate)";
SqlCommand dbCommand = new SqlCommand(query, dbConnection);
dbCommand.Parameters.Add(new SqlParameter("@tapecode", tapecodeBox.Text.ToString()));
dbCommand.Parameters.Add(new SqlParameter("@borrowman", userDropDownList.SelectedItem.Text.ToString()));
dbCommand.Parameters.Add(new SqlParameter("@operateman", Session["username"].ToString()));
dbCommand.Parameters.Add(new SqlParameter("@borrowreason", reasonDropDownList.SelectedItem.Text.ToString()));
dbCommand.Parameters.Add("@operatedate", SqlDbType.DateTime).Value = DateTime.Now.Date;
dbCommand.Parameters.Add("@borrowdate", SqlDbType.DateTime).Value = DateTime.Now.Date;
try
{
dbCommand.ExecuteNonQuery();
Response.Write("<script>");
Response.Write("window.alert('添加成功')");
Response.Write("</script>");
}
catch
{
Response.Write("<script>");
Response.Write("window.alert('添加失败,请与数据库管理员联系')");
Response.Write("</script>");
}
dbConnection.Close();
}

触发器:
CREATE TRIGGER Trigger1
ON dbo.ttapeborrow
After insert
AS
begin
update ttape
set instack = '0'
from ttape a, ttapeborrow b
where a.tapecode = b.tapecode
end

现在的情况是:只要有这个触发器,上面那段代码就无法添加记录,而一旦把触发器去掉,添加记录就正常,触发器语法是没错了,然到是逻辑错了?
...全文
36 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
-狙击手- 2007-12-17
对象名 ‘xxxx’ 无效的问题





这里可能会有人遇到对象名 ‘xxxx’无效的问题。系统表却不会产生这个问题,而用户表还要加上用户名,然后是表明才能访问,比如select * from author,会说对象名 author 无效,而用select * from test.author就可以访问,这个是用户首选身份的问题。





解决很简单,就是察看test登录用户是否具有dba的权限或者系统管理的权限,有的话去掉就行了。

因为如果用户有dba身份,那么它登陆后的默认表空间是dbo的系统表空间,所以去掉了之后,就会以正常的test表空间访问数据表了。
回复
angleoldhen 2007-12-17
各位老大,我知道是什么原因了,我重新建立了一下表ttape,就正常了。仔细比较一下重建表的前后,可能我碰到的问题与表格的创建者有关。错的时候ttape的建立者是test帐号,而ttapeborrow的建立者是系统默认的dbo。这也会影响吗?手头上N本SQL数据库的书竟然没有一本提到帐号问题,气死了
回复
angleoldhen 2007-12-17
2楼的答案无效
回复
fwacky 2007-12-17

--try
alter TRIGGER Trigger1
ON dbo.ttapeborrow
for insert
AS
begin
update a
set instack = '0'
from ttape a, ttapeborrow b
where a.tapecode = b.tapecode
end
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

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