url_relations(混合表)   
     relationId(混合id) urlId(路径id) userId(用户id) 这里对urlID和userID建立外键关系user 表建立对companies(公司表)的外键关系插入的时候应该先插入companies(公司表)表
然后在在这个基础上插入
urls(路径表)  
     urlId(路径id) url(路径地址)  

users(用户表)  
     userId(用户id)  name(用户名) compId(公司id)  
最后,再根据各表生成的键值插入
url_relations(混合表)

解决方案 »

  1.   

    url_relations(混合表)   
         relationId(混合id) urlId(路径id) userId(用户id) 这里对urlID和userID建立外键关系user 表建立对companies(公司表)的外键关系插入的时候应该先插入companies(公司表)表
    然后在在这个基础上插入
    urls(路径表)  
         urlId(路径id) url(路径地址)  

    users(用户表)  
         userId(用户id)  name(用户名) compId(公司id)  
    最后,再根据各表生成的键值插入
    url_relations(混合表)
      

  2.   

    -- 写个存储过程实现插入
    create proc p_insert 
    @username varchar(100),
    @company  varchar(100),
    @company_address  varchar(100),
    @url  varchar(100)
    as
    declare @compid int, @userid int, @urlid int
    insert companies(company, company_address)
    values(@company, @company_address)
    set @compid=@@identityinsert urls(url) values(@url)
    set @urlid = @@identityinsert users(name, compid) values(@username, @compid)
    set @userid = @@identityinsert url_relations(urlId, userId)
    values(@urlid, @userid)
    go
      

  3.   

    如果你的主键不是自增列, 则将存储过程中 set @..=@@identity 的这些语句改为获取插入记录主键的处理语句(自己生成主键的话, 获取主键值的方法跟你生成主键值的方法有关, 所以无法写出来)
      

  4.   

    create table companies
    (compId int identity(1,1),company varchar(20),company_address varchar(20)
    ,constraint pk_cp_compID primary key clustered(compId))   
    create table users  
    (userId int identity(1,1),name varchar(20),compId int,
    constraint pk_ur_userID primary key clustered(userID),
    constraint fk_ur_compID foreign key(compID) references companies(compID))   create table urls  
    (urlId int identity(1,1),url varchar(20),
    constraint pk_urls_urlId primary key clustered(urlID))  
    create table url_relations
    (relationId int identity(1,1),urlId int,userId int,
    constraint pk_ut_relationId primary key clustered(relationId),
    constraint fk_ut_urlId foreign key(urlId) references urls(urlId),
    constraint fk_ut_userId foreign key(userId) references users(userId))  
    gocreate proc p_inserted
           @col1 varchar(20),
           @col2 varchar(20),
           @col3 varchar(20),
           @col4 varchar(20)
    as
    begin
         declare @i int,@j int,@k intinsert companies
    select @col2,@col3select @i=@@identityinsert users
    select @col1,@iselect @j=@@identityinsert urls
    select @col4select @k=@@identityinsert url_relations
    select @k,@j
    end
    go
    exec dbo.p_inserted '张学友','四川长红','四川省成都市','http://www.sestl.com'exec dbo.p_inserted '刘德华','中国人','中国香港','http://www.andyliu.com'select * from companies
    select * from users
    select * from urls
    select * from url_relationsdrop proc dbo.p_inserted
    drop table url_relations,urls,users,companiescompId      company              company_address      
    ----------- -------------------- -------------------- 
    1           四川长红                 四川省成都市
    2           中国人                  中国香港(所影响的行数为 2 行)userId      name                 compId      
    ----------- -------------------- ----------- 
    1           张学友                  1
    2           刘德华                  2(所影响的行数为 2 行)urlId       url                  
    ----------- -------------------- 
    1           http://www.sestl.com
    2           http://www.andyliu.c(所影响的行数为 2 行)relationId  urlId       userId      
    ----------- ----------- ----------- 
    1           1           1
    2           2           2(所影响的行数为 2 行)
    表的设计上应该是存在问题的,不应该用自动编号生成,应该是手动生成才对!比如users表的主键应该是ur_0001,ur_0002这样输入才容易识别
      

  5.   

    谢谢zjcxc(邹建),samfeng_2003(凤翼天翔)两位高人指点,每人50分,不要抢哦,哈哈,总之非常感谢!!!
      

  6.   

    谢谢zjcxc(邹建),samfeng_2003(凤翼天翔)两位高人指点,每人50分,不要抢哦,哈哈,总之非常感谢!!!