两个表
urlName表
字段
id int
url varchar(200)
zid int
type varchar(20)siteName表
字段
zid int 
name varchar(200)有主外键关系,现在,我想用一条SQL语句同事更新urlName表里的url字段和siteName表里的name字段,请问各位大侠有什么办法?在线等

解决方案 »

  1.   

    用触发器 
    在urlName表建更新siteName表对应数据的触发器 
    这样urlName表更新了,相应siteName表数据也会更新 先建urlName表的触发器 
    create TRIGGER urlName_Chg ON urlName FOR UPDATE 
    AS 
    update siteName set name=urlName.url
    from urlName 
    where urlName.zid=siteName.zid以后你执行修改urlName表url内容,zid所对应的siteName表的name相应内容也自动更新祝楼主好运!
      

  2.   


    create view v_url as
    select * from urlName ,siteName where urlName.zid = siteName.zid创建视图时候老是报“各view再函数的队列名必须独一无二。view再函数'v_url'的队列名'zid'被复数指定。”
      

  3.   

    设置一个触发器,urlName的url改变时更新那个表,或是写两个update一起执行不就完了。
      

  4.   


    UPDATE urlName,siteName SET url=@url,name=@name WHERE siteName.zid=urlName.zid AND ID=@IN
    这样不是可行吗?
      

  5.   

    UPDATE urlName,siteName SET url=@url,name=@name WHERE siteName.zid=urlName.zid AND ID=@IN 这是一种最简单的方法哈。。其实相当于创建了一个视图,同时更新了这个视图。。
      

  6.   

    UPDATE urlName,siteName SET url=@url,name=@name WHERE siteName.zid=urlName.zid AND ID=@IN 
    此句話在SQL 2000下是不行的
      

  7.   

    /// 执行多条SQL语句,实现数据库事务。
    /// </summary>
    /// <param name="SQLStringList">多条SQL语句</param>
    public static void ExecuteSqlTran(ArrayList SQLStringList)
    {
    using (SqlConnection conn = new SqlConnection(connectionString))
    {
    conn.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection=conn;
    SqlTransaction tx=conn.BeginTransaction();
    cmd.Transaction=tx;
    try
    {   
    for(int n=0;n<SQLStringList.Count;n++)
    {
    string strsql=SQLStringList[n].ToString();
    if (strsql.Trim().Length>1)
    {
    cmd.CommandText=strsql;
    cmd.ExecuteNonQuery();
    }
    }
    tx.Commit();
    }
    catch(System.Data.SqlClient.SqlException E)
    {
    tx.Rollback();
    throw new Exception(E.Message);
    }
    }
    }
      

  8.   

    LZ为什么一定要一条语句来更新呢?
    是不是urlName和siteName是同一个东西?如果是同一个东西,设计TABLE的时候我觉得就不应该出现在两个表里。