触发器错误,谢谢

nalnait 2008-01-05 11:00:33
USE Store
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'Contract_Detail' AND type = 'TR')
DROP TRIGGER Contract_Detail
GO
CREATE TRIGGER Contract_Detail
ON ContractInfo
FOR INSERT
AS

DECLARE @Cid char(10),
@Pid char(10),
@Clid char(10),
@Cprice money,
@Csum int,
@Cfinish datetime,
@Cstate varchar(6)
BEGIN
SELECT @Cid=[ContractId],@Pid=PsT.ProductId,@Clid=[ClientId],@Csum=[ContractSum], @Cstate=[ContractState],@Cfinish=[ContractFinish] FROM inserted as IsT ,ProductInfo as PsT
where IsT.ProductId=PsT.ProductId
if(@Cstate='完成')
INSERT INTO [Store].[dbo].[DetailInfo]([ContractId], [ProductId], [ClientId], [ProductPrice], [ProductSum], [ContractFinish])
VALUES(@Cid,@Pid,@Clid,@Cprice,@Csum,@Cfinish)
end
//上面是不能插入表[DetailInfo]内的代码,奇怪的是若把where IsT.ProductId=PsT.ProductId 去掉则可以
//为什么,希望指点,头大了,谢谢~~~~~~~~
...全文
70 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
nalnait 2008-01-06
  • 打赏
  • 举报
回复
谢谢两位快速的反应........
-狙击手- 2008-01-05
  • 打赏
  • 举报
回复
CREATE   TRIGGER   Contract_Detail 
ON ContractInfo
FOR INSERT
AS

DECLARE @Cid char(10),
@Pid char(10),
@Clid char(10),
@Cprice money,
@Csum int,
@Cfinish datetime,
@Cstate varchar(6)
BEGIN

INSERT INTO [Store].[dbo].[DetailInfo]([ContractId], [ProductId], [ClientId], [ProductPrice], [ProductSum], [ContractFinish])
SELECT @Cid=[ContractId],@Pid=PsT.ProductId,@Clid=[ClientId],@Csum=[ContractSum], @Cstate=[ContractState],@Cfinish=[ContractFinish]
FROM inserted
where [ContractState] = '完成'
end
正牌风哥 2008-01-05
  • 打赏
  • 举报
回复
SELECT @Cid=[ContractId],@Pid=PsT.ProductId,@Clid=[ClientId],@Csum=[ContractSum], @Cstate=[ContractState],@Cfinish=[ContractFinish]
--------这一段列名指定表别名

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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