22,209
社区成员
发帖
与我相关
我的任务
分享
create database student_score
GO
--在数据库中创建学生表
use student_score
GO
create table student
( stu_id char(8) primary key,
stu_name char(10),
stu_sex char(2),
stu_birthday smalldatetime,
class_id char(6)
age int
)
go
ALTER trigger [dbo].[stu_insert]
on [dbo].[student]
for insert
as
declare @ID int
select @ID from inserted
exec PROC_INSERT_DATA_DETAIL @ID
ALTER PROCEDURE [dbo].[PROC_INSERT_DATA_DETAIL](@InsertID int)
AS
BEGIN
declare @ProcessPath varchar(128)
set @ProcessPath='E:\SVN.NET\Createlog\Debug\Createlog.exe '+ CONVERT(varchar(16),@InsertID)
select @ProcessPath
declare @SQL nvarchar(256)
set @SQL='master.sys.xp_cmdshell ' +'''' + @ProcessPath +''''
insert into dbo.log values(@SQL)
EXEC(@SQL)
END
DECLARE @ID INT
SET @ID = 17
exec PROC_INSERT_DATA_DETAIL @ID
ALTER PROCEDURE [dbo].[PROC_INSERT_DATA_DETAIL](@InsertID int)
AS
BEGIN
declare @ProcessPath varchar(128)
set @ProcessPath='E:\SVN.NET\Createlog\Debug\Createlog.exe '+ CONVERT(varchar(16),@InsertID)
select @ProcessPath
declare @SQL varchar(256)
--这条可以插入
--set @SQL='master.sys.xp_cmdshell '
--这条不能插入
--set @SQL='master.sys.xp_cmdshell ' +'''' + @ProcessPath +''''
--这条也不能插入
--Set @SQL=@ProcessPath
insert into dbo.logT1 (logText,InsertTime) values(CONVERT(varchar(16),@InsertID),GETDATE())
insert into dbo.logT1 (logText,InsertTime) values(@SQL,GETDATE())
--EXEC(@SQL)
END
select @ID from inserted
这句有问题,@ID没有赋值;
如果是每次插入一条,可以试试这样
select @ID=stu_id from inserted
如果是批量插入,得用别的方法
declare @InsertID int
select @InsertID = age from inserted
declare @ProcessPath varchar(256)
set @ProcessPath='master.sys.xp_cmdshell ''E:\SVN.NET\Createlog\Debug\Createlog.exe '+ CONVERT(varchar(16),@InsertID)+''''
insert into dbo.logT1 (logText,InsertTime) values(@ProcessPath,GETDATE())
EXEC(@ProcessPath)