代码之家  ›  专栏  ›  技术社区  ›  automatic

基于集合的插入到具有1到0-1关系的两个表中

  •  1
  • automatic  · 技术社区  · 17 年前

    我的问题是,我有很多记录来自我想在两个表中插入的选择,我无法想到一种基于集合的方法来进行这些插入。

    我是否缺少非游标解决方案?

    2 回复  |  直到 17 年前
        1
  •  2
  •   HLGEM    17 年前

    是的,在网上图书中查找输出子句。

        2
  •  0
  •   onedaywhen    17 年前

    INSERT from:这可能是一个永久或临时的基表或派生表(见下文),无论如何都应该满足您对基于集合的解决方案的需求。使用此表和具有以下条件的表之间的联接 IDENTITY 列上的自然键,以找出自动生成的值。这里有一个简短的例子:

    CREATE TABLE Test1 
    (
     surrogate_key INTEGER IDENTITY NOT NULL UNIQUE, 
     natural_key CHAR(10) NOT NULL CHECK (natural_key NOT LIKE '%[^0-9]%') UNIQUE
    );
    
    CREATE TABLE Test2
    (
     surrogate_key INTEGER NOT NULL UNIQUE
        REFERENCES Test1 (surrogate_key), 
     data_col INTEGER NOT NULL
    );
    
    INSERT INTO Test1 (natural_key)
    SELECT DT1.natural_key
      FROM (
            SELECT '0000000001', 22
            UNION ALL 
            SELECT '0000000002', 55
            UNION ALL 
            SELECT '0000000003', 99
           ) AS DT1 (natural_key, data_col);
    
    INSERT INTO Test2 (surrogate_key, data_col)
    SELECT T1.surrogate_key, DT1.natural_key
      FROM (
            SELECT '0000000001', 22
            UNION ALL 
            SELECT '0000000002', 55
            UNION ALL 
            SELECT '0000000003', 99
           ) AS DT1 (natural_key, data_col)
           INNER JOIN Test1 AS T1
              ON T1.natural_key = DT1.natural_key;
    
    推荐文章