2017-01-26 6 views
2

У меня есть база данных с этими таблицами:связывая оператор INSERT со значением ключевого столбца, не в другом

Table Relationships

Я вставив значения PROJNAME, Описание и FileStorage в таблицу Project. Я пытаюсь связать эту информацию с таблицей Users, где у меня есть только значение неквантового столбца AUID. До сих пор у меня есть что-то вроде этого:

INSERT INTO Project (ProjName, Description, FileStorage) 
VALUES 
(
    '#form.capstoneName#' 
    ,'#form.capstoneDescription#' 
    , <cfqueryparam cfsqltype="cf_sql_blob" value="#FileReadBinary(FORM.capstoneFile)#"> 
) 

Однако, я хочу это конкретное заявление INSERT, чтобы быть связано с идентификационным столбце таблицы пользователей через значения AUID который я хранящего для зарегистрированного пользователя.

ответ

1

Если проект ID является столбцом идентификации, используйте cfquery result attribute с запросом INSERT для получения вновь созданного проекта ID. Затем используйте INSERT/SELECT для поиска соответствующего идентификатора пользователя и вставьте оба значения в таблицу Project_Users. При необходимости измените значение cfqueryparam cfsqltypes.

<!--- Inserts one record for EACH matching AUID value ---> 
    INSERT INTO Project_Users (ProjectID, UserID) 
    SELECT <cfqueryparam value="#resultName.generatedKey#" cfsqltype="cf_sql_integer"> 
     , ID 
    FROM Users 
    WHERE AUID = <cfqueryparam value="{The_AUID_Value}" cfsqltype="{Update_With_Your_Type}"> 

NB: Обязательно оберните как INSERT-х в cftransaction, чтобы обеспечить оба запроса либо succeed or fail as a single unit.

См дополнительные примеры атрибута "результата":

+0

Я дам этому попытку. Shoutout, спасибо за то, что помогли мне понять многих для многих. –

+0

Добро пожаловать. Одна вещь, о которой я забыл упомянуть, не забудьте обернуть оба INSERT в 'cftransaction'. Это гарантирует, что вы не получите противоречивые данные, если по какой-то причине один из INSERT потерпит неудачу. – Leigh

Смежные вопросы