2012-11-09 118 views
-2

发出─我是新来的你们:)插入查询与外键

我建立一个java的申请,并卡在之情况与foregign钥匙插入的一个SQL.Need帮助。假设我有2个表Employee_Type和员工

Table **Employee_Type** 
idType, 
position 

Table **Employee**---- 
empId, 
EmpName, 
emp_type 
FK (emp_type) reference Employee_type(idType) 

Now values in **Employee_Type** 
1, 
Manager 

I am inserting manually into Employee Table 
insert into **employee** (empId,name,**emp_type**) values (10,'prashant',1) 

Here in above insert i am inserting manually **emp_type** which is **FK** . My question, is there any way to insert FK value automatically using select like below example 

insert into **employee** (empId,name,emp_type) values (10,'prashant',**(select idType from Employee_type,employee where employee.emp_type=employee_type.idtype))** 

Please suggest. 
+0

你的错误是什么? – smk

回答

1

不指定RDBMS和语法,因此可能会有所不同,但你应该能够重组声明的INSERT INTO ... SELECT格式使用文字值:

INSERT INTO employee (empId,name,emp_type) 
    SELECT 
    /* Build a SELECT statement which includes the static values as literals */ 
    '10' AS empId, 
    'prashant' AS name, 
    /* and the idType column */ 
    idType 
    FROM Employee_type,employee 
    WHERE employee.emp_type=employee_type.idtype 

注意,没有什么东西可以WHERE子句中否则,上面会插入一行employeeSELECT声明匹配的每一行。

+0

谢谢迈克尔......我正在使用SQLite DB和ibatis –

+0

我上面的语法对SQLite有效。 –