2017-10-09 1 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       ); 

내가 하나 개의 행을 삽입을 내 응용 프로그램에 대해 일종의 "admin"사용자를 만들 수 있습니다.

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

그러면 사용자 테이블에 더 많은 사용자를 삽입하려고합니다. 그러나 그렇게 할 때 "created_by"필드가 방금 작성한 "system"사용자의 ID 인 "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

하지 확실히 그것으로 갈 수있는 열을 가지고 "활성"한 것으로 보입니다의 값을,하지만 당신은 SCOPE_IDENTITY의 경우 MSSQL 동등한 필요 -

또한, 귀하의 삽입은 하나의 열이 너무 많은했다 마지막 삽입 문장의 기본 키를 얻으려면 –

답변

0

어때? MySQL의와

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

예! 그게 내가 필요한거야! 정말 고맙습니다! –