Sql server 我需要批量插入行,如1000';s在一列中使用具有不同值的触发器

Sql server 我需要批量插入行,如1000';s在一列中使用具有不同值的触发器,sql-server,tsql,Sql Server,Tsql,这是扳机 CREATE TRIGGER [dbo].[Teacher] ON [dbo].[Teacher] After INSERT AS Declare @fid int, @PR NVARCHAR(MAX),@Mycounter as INT Select top 1 @fid = eid from human where TypeID = 2 order by NewID() Select top 1 @PR = Pid from [dbo].[Program] Where De

这是扳机

CREATE TRIGGER [dbo].[Teacher]
ON [dbo].[Teacher]
After INSERT
AS

Declare @fid int, @PR NVARCHAR(MAX),@Mycounter  as INT
Select top 1 @fid = eid from human where TypeID = 2 
order by NewID()

Select top 1 @PR = Pid from [dbo].[Program] Where Depid = 1
order by NewID()

Set @Mycounter =1
While @Mycounter <5

BEGIN
    Insert Into HeadofDep(SessionID,fid,pid,name,createddate)
    Select SessionID, @fid,@PR,NULL,null from INSERTED
    Where eid in (Select eid from human where TypeID = 3)
set @MyCounter = @MyCounter + 1; 
END
创建触发器[dbo].[Teacher]
关于[dbo].[Teacher]
插入后
作为
声明@fid int、@PR NVARCHAR(MAX)、@Mycounter为int
从人类中选择top 1@fid=eid,其中TypeID=2
NewID()命令
从[dbo].[Program]中选择top 1@PR=Pid,其中Depid=1
NewID()命令
设置@Mycounter=1

而@Mycounter只需增加
SessionID
,然后将其他内容放入循环中:

Declare @fid int, @PR NVARCHAR(MAX),@Mycounter  as INT

Set @Mycounter =1
While @Mycounter <5

BEGIN
Select top 1 @fid = eid from human where TypeID = 2 
order by NewID()

Select top 1 @PR = Pid from [dbo].[Program] Where Depid = 1
order by NewID()

    Insert Into HeadofDep(SessionID,fid,pid,name,createddate)
    Select SessionID, @fid,@PR,NULL,null from INSERTED
    Where eid in (Select eid from human where TypeID = 3)
set @MyCounter = @MyCounter + 1; 
END

只需增加
SessionID
,然后将其他内容放入循环中:

Declare @fid int, @PR NVARCHAR(MAX),@Mycounter  as INT

Set @Mycounter =1
While @Mycounter <5

BEGIN
Select top 1 @fid = eid from human where TypeID = 2 
order by NewID()

Select top 1 @PR = Pid from [dbo].[Program] Where Depid = 1
order by NewID()

    Insert Into HeadofDep(SessionID,fid,pid,name,createddate)
    Select SessionID, @fid,@PR,NULL,null from INSERTED
    Where eid in (Select eid from human where TypeID = 3)
set @MyCounter = @MyCounter + 1; 
END

这个触发器似乎有很大的缺陷。为什么要将一个完全不同的表中的值设置为变量,为什么是随机值?@larnu哪个随机值?这些随机值,@Amna:
Select top 1@fid=eid from human,其中TypeID=2 order by NewID()
&
Select top 1@PR=Pid from[dbo]。[Program]其中Depid=1 order by NewID())
@larnu For
@fid
:这是因为在我的系统中,我们定义了不同的类人组,如教师、司机、女佣、代理等,所以当在教师中插入任何行时,我希望从类型id 2插入,即初级教师组(包括助理教师、讲师等)对于
@PR
而言,教师被分配到
depid 1
中的不同程序,因此从
depid 1
中选择任意一个随机程序。该触发器似乎存在很大缺陷。为什么要将一个完全不同的表中的值设置为变量,为什么是随机值?@larnu哪个随机值?这些随机值,@Amna:
Select top 1@fid=eid from human,其中TypeID=2 order by NewID()
&
Select top 1@PR=Pid from[dbo]。[Program]其中Depid=1 order by NewID())
@larnu For
@fid
:这是因为在我的系统中,我们定义了不同的类人组,如教师、司机、女佣、代理等,所以当在教师中插入任何行时,我希望从类型id 2插入,即初级教师组(包括助理教师、讲师等)对于
@PR
,教师被分配到
部门id 1
的不同课程,因此从
部门id 1
中选择任意一个随机课程。