数据库实训,出现的问题,变量名在查询批次或存储过程内部必须唯一

北方。 2018-07-05 02:27:23
create trigger 删除用户
on 用户信息
for delete as
declare @卡号 varchar(12)
select @卡号= [Card number] from deleted
declare @卡号 varchar(12)
select @卡号= [Card number] from 用户信息
where [Card number]=(select [Card number] from 消费信息)
begin
delete from 用户信息 where [Card number]=@卡号
if(@卡号=@卡号)
begin
delete from [Card number] where [Card number]=@卡号
delete from [User name] where [Card number]=@卡号
delete from [User number] where [Card number]=@卡号
end
end


错误 消息 134,级别 15,状态 1,过程 删除用户,第 7 行
变量名 '@卡号' 已声明。变量名在查询批次或存储过程内部必须唯一。
...全文
440 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2018-07-05
  • 打赏
  • 举报
回复
引用 4 楼 shinger126 的回复:
很多大虾喜欢用中文,反正我是看见就烦。。

用中文的, 只能叫小虾
shinger126 2018-07-05
  • 打赏
  • 举报
回复
引用 3 楼 yenange 的回复:
CREATE TRIGGER 删除用户
ON 用户信息
FOR DELETE
AS
BEGIN
DECLARE @卡号 VARCHAR(12)
SELECT @卡号 = [Card number]
FROM DELETED

DECLARE @卡号2 VARCHAR(12)
SELECT @卡号2 = [Card number]
FROM 用户信息
WHERE [Card number] = (
SELECT [Card number]
FROM 消费信息
)

BEGIN
DELETE
FROM 用户信息
WHERE [Card number] = @卡号

IF (@卡号 = @卡号2)
BEGIN
DELETE
FROM [Card number]
WHERE [Card number] = @卡号

DELETE
FROM [User name]
WHERE [Card number] = @卡号

DELETE
FROM [User number]
WHERE [Card number] = @卡号
END
END
END

一个是 卡号 , 另外一个改成 卡号2 ?


不过你的代码太混乱:
1. 对象名(表名、字段名、存储过程、函数、触发器等)都不要用中文, 这个现在你觉得无所谓, 后面会吃亏;
2. 表名中间不要有空格, 大忌;
3. 用文字写一下你的触发器要实现的业务吧, 看不明白你想做什么

很多大虾喜欢用中文,反正我是看见就烦。。
吉普赛的歌 2018-07-05
  • 打赏
  • 举报
回复
CREATE TRIGGER 删除用户
ON 用户信息
FOR DELETE
AS
BEGIN
DECLARE @卡号 VARCHAR(12)
SELECT @卡号 = [Card number]
FROM DELETED

DECLARE @卡号2 VARCHAR(12)
SELECT @卡号2 = [Card number]
FROM 用户信息
WHERE [Card number] = (
SELECT [Card number]
FROM 消费信息
)

BEGIN
DELETE
FROM 用户信息
WHERE [Card number] = @卡号

IF (@卡号 = @卡号2)
BEGIN
DELETE
FROM [Card number]
WHERE [Card number] = @卡号

DELETE
FROM [User name]
WHERE [Card number] = @卡号

DELETE
FROM [User number]
WHERE [Card number] = @卡号
END
END
END

一个是 卡号 , 另外一个改成 卡号2 ?


不过你的代码太混乱:
1. 对象名(表名、字段名、存储过程、函数、触发器等)都不要用中文, 这个现在你觉得无所谓, 后面会吃亏;
2. 表名中间不要有空格, 大忌;
3. 用文字写一下你的触发器要实现的业务吧, 看不明白你想做什么
北方。 2018-07-05
  • 打赏
  • 举报
回复
这个在哪改?
二月十六 2018-07-05
  • 打赏
  • 举报
回复
声明了两次@卡号,名字一样的,可以改成@卡号1和@卡号2

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧