CREATE TRIGGER NewPrivilege_agent
ON dbo.info_tbl_agent 
FOR INSERT
ASdeclare @agent_id int
select @agent_id = agent_id
from insertedinsert privilege_agent
select @agent_id, privilege_id 
from privilege_def_agent提示错误:键列信息不足或不正确。更新影响到多条但是我只向privilege_agent插入一条记录的时候是可以的:
insert privilege_agent
select top 1 @agent_id, privilege_id 
from privilege_def_agent
表privilege_agent(agent_id, privilege_id)
agent_id, privilege_id为主键在查询分析器执行:
insert privilege_agent
select 100, privilege_id 
from privilege_def_agent
也是可以的

解决方案 »

  1.   

    insert privilege_agent
    select @agent_id, privilege_id 
    from privilege_def_agent
    这句好像有问题
      

  2.   

    先把你的privilege_agent表清空看看什么效果
      

  3.   

    insert privilege_agent
    select 1, privilege_id 
    from privilege_def_agent
    这样也是一样的问题,语法是没错的,有这个语法,
    在查询分析器是可以的表是空的
      

  4.   

    如果可以把你的数据库发给我,帮你看看[email protected]
      

  5.   

    在.net中管理数据库的
    在程序中执行新增操作的时候也有错误
    但是在sql 企业管理器中输入数据是正确的,呵呵
    真是搞不清楚呀
      

  6.   

    没有办法了,只有改用游标了CREATE TRIGGER NewPrivilege_agent
    ON dbo.info_tbl_agent 
    FOR INSERT
    ASdeclare @agent_id int
    select @agent_id = agent_id
    from inserted/*
    insert privilege_agent
    select @agent_id, privilege_id 
    from privilege_def_agent
    */declare curPrivilege cursor for
    select privilege_id from privilege_def_agentdeclare @privilege_id int
    open curPrivilege
    fetch next from curPrivilege into @privilege_id
    while @@FETCH_STATUS = 0 
    begin
    insert into privilege_agent
    values(@agent_id, @privilege_id)

    fetch next from curPrivilege into @privilege_id
    end
    close curPrivilege
    deallocate curPrivilege
      

  7.   

    表privilege_agent(agent_id, privilege_id)
    agent_id, privilege_id为主键
    insert privilege_agent
    select @agent_id, privilege_id  //有冇保证select出来的privilege_id没有重复值?
    from privilege_def_agentprivilege_de_agent的主键是什么?
      

  8.   

    privilege_def_agent有2个字段:privilege_id, description
    主键是:privilege_id
    当然不会有重复值了
      

  9.   

    其实是因为少了一个设置的语句在最前面加上:SET NOCOUNT ON 就可以了