帮你顶顶, CREATE trigger [AddMsg] ON [NewTrackPoint] FOR INSERT as delete NewTrackPoint where CarPhone=(select CarPhone from inserted) insert into NewTrackPoint (PointID,CarPhone,CarMark,PointLong,PointLat,Speed,Direction,State,Addr,ReTime,BeiZhu) select PointID,CarPhone,CarMark,PointLong,PointLat,Speed,Direction,State,Addr,ReTime,BeiZhu from inserted goLZ 对触发期平时用的比较少,但我看似乎没什么问题
CREATE trigger [AddMsg] ON [dbo].[TrackPoint] FOR INSERT as delete dbo.NewTrackPoint where CarPhone=(select CarPhone from inserted) insert into dbo.NewTrackPoint (PointID,CarPhone,CarMark,PointLong,PointLat,Speed,Direction,State,Addr,ReTime,BeiZhu) select PointID,CarPhone,CarMark,PointLong,PointLat,Speed,Direction,State,Addr,ReTime,BeiZhu from inserted go--------------------- 语法没错,应该如一楼所说,存在某中约束,不让你操作.
/* 创建表的时候,把中文排序规则 COLLATE Chinese_PRC_CI_AS 去掉,让英文SQL使用默认的英文排序规则,肯定没问题了: */CREATE TABLE [dbo].[NewTrackPoint] ( [PointID] [int] NOT NULL , [CarPhone] [varchar] (15) NULL , [CarMark] [varchar] (20) NULL , [PointLong] [float] NULL , [PointLat] [float] NULL , [Speed] [float] NULL , [Direction] [float] NULL , [State] [varchar] (300) NULL , [Addr] [varchar] (400) NULL , [ReTime] [datetime] NULL , [BeiZhu] [char] (150) NULL ) ON [PRIMARY] GOCREATE trigger [AddMsg] ON [dbo].[TrackPoint] FOR INSERT as delete dbo.NewTrackPoint where CarPhone=(select CarPhone from inserted) insert into dbo.NewTrackPoint (PointID,CarPhone,CarMark,PointLong,PointLat,Speed,Direction,State,Addr,ReTime,BeiZhu) select PointID,CarPhone,CarMark,PointLong,PointLat,Speed,Direction,State,Addr,ReTime,BeiZhu from inserted go
--如果表一定要使用中文排序,只有修改触发器:/* delete dbo.NewTrackPoint where CarPhone=(select CarPhone from inserted) */ delete dbo.NewTrackPoint where CarPhone=(select CarPhone COLLATE Chinese_PRC_CI_AS from inserted) --显式指定 INSERTED.CarPhone 也使用中文排序:COLLATE Chinese_PRC_CI_AS
CREATE trigger [AddMsg] ON [NewTrackPoint]
FOR INSERT
as
delete NewTrackPoint where CarPhone=(select CarPhone from inserted)
insert into NewTrackPoint (PointID,CarPhone,CarMark,PointLong,PointLat,Speed,Direction,State,Addr,ReTime,BeiZhu)
select PointID,CarPhone,CarMark,PointLong,PointLat,Speed,Direction,State,Addr,ReTime,BeiZhu from inserted
goLZ 对触发期平时用的比较少,但我看似乎没什么问题
FOR INSERT
as
delete dbo.NewTrackPoint where CarPhone=(select CarPhone from inserted)
insert into dbo.NewTrackPoint (PointID,CarPhone,CarMark,PointLong,PointLat,Speed,Direction,State,Addr,ReTime,BeiZhu)
select PointID,CarPhone,CarMark,PointLong,PointLat,Speed,Direction,State,Addr,ReTime,BeiZhu from inserted
go---------------------
语法没错,应该如一楼所说,存在某中约束,不让你操作.
创建表的时候,把中文排序规则 COLLATE Chinese_PRC_CI_AS 去掉,让英文SQL使用默认的英文排序规则,肯定没问题了:
*/CREATE TABLE [dbo].[NewTrackPoint] (
[PointID] [int] NOT NULL ,
[CarPhone] [varchar] (15) NULL ,
[CarMark] [varchar] (20) NULL ,
[PointLong] [float] NULL ,
[PointLat] [float] NULL ,
[Speed] [float] NULL ,
[Direction] [float] NULL ,
[State] [varchar] (300) NULL ,
[Addr] [varchar] (400) NULL ,
[ReTime] [datetime] NULL ,
[BeiZhu] [char] (150) NULL
) ON [PRIMARY]
GOCREATE trigger [AddMsg] ON [dbo].[TrackPoint]
FOR INSERT
as
delete dbo.NewTrackPoint where CarPhone=(select CarPhone from inserted)
insert into dbo.NewTrackPoint (PointID,CarPhone,CarMark,PointLong,PointLat,Speed,Direction,State,Addr,ReTime,BeiZhu)
select PointID,CarPhone,CarMark,PointLong,PointLat,Speed,Direction,State,Addr,ReTime,BeiZhu from inserted
go
delete dbo.NewTrackPoint where CarPhone=(select CarPhone from inserted)
*/
delete dbo.NewTrackPoint where CarPhone=(select CarPhone COLLATE Chinese_PRC_CI_AS from inserted)
--显式指定 INSERTED.CarPhone 也使用中文排序:COLLATE Chinese_PRC_CI_AS
创建表的时候,把中文排序规则 COLLATE Chinese_PRC_CI_AS 去掉,让英文SQL使用默认的英文排序规则,肯定没问题了:
*/显式指定 INSERTED.CarPhone 也使用中文排序:COLLATE Chinese_PRC_CI_AS才是正道。抱歉抱歉!看来信口开河是不行的:)