2017-10-09 57 views
-1

我使用MySQL 5.7結果,並有一個看起來是這樣的一個用戶表:MySQL的 - 插入過程中指定列的值與選擇

create table user (
    id   int unsigned not null auto_increment primary key , 
    first_name varchar(30) not null       , 
    last_name varchar(30) not null       , 
    user_name varchar(15) not null unique      , 
    email  varchar(100) not null       , 
    phone  varchar(255)  null       , 
    address  varchar(100)  null       , 
    created_by int unsigned not null       , 
    created_on timestamp  not null       , 
    modified_on timestamp   null       ); 

我插入一行到表像這樣爲了爲我的應用程序創建一種「管理員」用戶。

insert into user value (0, "plm", "admin", "plm_admin", "[email protected]_company.com", "111-222-3333", null, 1, now(), null); 

然後我想插入更多的用戶到用戶表中。但是,當我這樣做時,我想指定「created_by」字段被設置爲我剛剛創建的「system」用戶的標識「plm_admin」。

這裏是什麼,我試圖做一個例子:

insert into user value (0, "steve", "smith", "ssmith" , "[email protected]_company.com", "111-222-4444", null, select id from user where user_name = "plm_admin", now(), null); 

這個SQL不起作用,但希望你的想法是插入用戶史蒂夫·史密斯的值時,我想指定用戶「plm_admin」的ID作爲「created_by」列的值。

+0

不知道MySQL的價值,但你需要的是MSSQL相當於SCOPE_IDENTITY的獲取最後一個插入語句的主鍵 –

回答

0

這個怎麼樣?

此外,您插入了一列太多 - 「積極」並沒有出現有一列去用它

insert into user value (0, "plm", "admin", "plm_admin", "[email protected]_company.com", "111-222-3333", null, 1, now(), null); 
SET @id = LAST_INSERT_ID(); 
insert into user value (1, "steve", "smith", "ssmith" , "[email protected]_company.com", "111-222-4444", null, @id, now(), null); 
insert into user value (2, "john", "smith", "jsmith" , "[email protected]_company.com", "111-222-4444", null, @id, now(), null); 
+0

該sql代碼工作,但不是我想要的行爲。 –

+0

我希望插入用戶表的所有後續用戶都將「created_by」字段設置爲用戶「plm_admin」的ID。 –

+0

是的!這正是我需要的!非常感謝! –