例如:
表1.user
字段:id, not null;
      name
      role, not null;表2.role
字段:id, not null;
      name
      resc, not null;表3.resc
字段:id, not null;
      name
      user,not null;

解决方案 »

  1.   

    没啥太好的办法~~  procedure?
      

  2.   

    只能是多个insert语句 一条语句做不到吧
      

  3.   

    以前我这样用过,但是忘记了,帮你找了一下,希望对你有帮助
    在以前的版本中,如果想插入多个表中,需要使用多条INSERT语句,9I开始可以用一条INSERT语句实现向多个表中插入数据.
    INSERT [ALL] [conditional_insert_clause]
    [insert_into_clause values_clause] (subquery)其中conditional_insert_clause如下:
    [ALL] [FIRST]
    [WHEN condition THEN] [insert_into_clause values_clause]
    [ELSE] [insert_into_clause values_clause]上面的语法说明其实包含了两种情况
    >无条件
    >有条件,所以后面的conditional_insert_clasue里出现的[ALL]和INSERT后面的[ALL]是分属两种情形下的
    举例就很容易理解了
    无条件INSERT ALL
    INSERT ALL
    INTO sal_history VALUES(EMPID,HIREDATE,SAL)
    INTO mgr_history VALUES(EMPID,MGR,SAL)
    SELECT employee_id EMPID,hire_date HIREDATE,salary SAL,manager_id MGR
    FROM employees
    WHERE employee_id>200;
    因为没有附加限制于检索出的记录,所以所有检索返回数据讲根据其列名插入相应的表中.有条件的INSERT ALL
    INSERT ALL
    WHEN SAL>10000 THEN
    INTO sal_history VALUES(EMPID,HIREDATE,SAL)
    WHEN MGR>200 THEN
    INTO mgr_history VALUES(EMPID,MGR,SAL)
    SELECT employee_id EMPID,hire_date HIREDATE,salary SAL,manager_id MGR
    FROM employees
    WHERE employee_id>200;
    这里就将比较了,返回记录将比较其SAL,如果大于10000则插入SAL_HISTORY,同理,MGR大于200的记录将插入MGR_HISTORY表.其余都将丢弃.有条件的FIRST INSERT
    FIRST与ALL的区别在于当遇到第一个求值为TRUE的子句之后停止对WHEN子句求值,而ALL不论是否求值为TRUE.
    INSERT FIRST
    WHEN SAL>25000 THEN
    INTO special_sal VALUES(DEPTID,SAL)
    WHEN HIREDATE like ('%00%') THEN
    INTO hiredate_history_00 VALUES(DEPTID,HIREDATE)
    WHEN HIREDATE like ('%99%') THEN
    INTO hiredate_history_99 VALUES(DEPTID,HIREDATE)
    ELSE
    INTO hiredate_history VALUES(DEPTID,HIREDATE)
    SELECT department_id DEPTID,SUM(salary) SAL,
    MAX(hire_date) HIREDATE
    FROM employees
    GROUP BY department_id;
    上例中如果第一个WHEN子句求值为TRUE则其后的WHEN子句将不会被执行,反之将直到遇到第一个满足条件的子句执行为止.
      

  4.   


    not null列的必须提供数据
    primary key和unique列的必须提供唯一值
    下面说说参照约束的,既外键约束:
    1.你可以先在被参照的表中添加数据,再向参照表添加数据
    2.你可以将外键约束延迟,到提交时才验证参照约束。
      在相关约束后面加上 DEFERRABLE INITIALLY DEFERRED