Как вставить информацию в таблицу SQL, если в таблице есть внешний ключ? - PullRequest
0 голосов
/ 03 октября 2009
    Id | Product Name |Color | Material
    ------------------------------------    // products
    1          car    1      | 2
    2          desk   3      | 1
    3          window 2      | 3


    -----------------------
    Id | Product Color Name 
    -----------------------    // productColor
    1          red
    2          blue
    3          yellow


    -----------------------
    Id | Product Material Name 
    -----------------------    // productMaterial
    1          Metal
    2          Glass
    3          Wood

    -----------------------

У меня есть выпадающий список, который читает из таблицы Продукты и заполняет текстовые поля указанным свойством материала. Я использую ForeignKey, чтобы связать таблицу продуктов с данными из материалов и цветов. Как я могу заполнить базу новыми продуктами. (новые продукты и новые материалы)

Новый продукт, который будет указан в списке ddlist, будет называться phone и заполнять текстовые поля цветом (фиолетовый) и материалом (пластик)

Ответы [ 4 ]

4 голосов
/ 03 октября 2009

Если вы выбираете из предопределенного списка профессий в вашей таблице карьер, выбор для профессии должен иметь видимую строку CareerName и значение IDCareer. Когда пользователь выбирает один, у вас есть значение id, которое входит в ваш SQL вставки. Предположим, ваш стол заполнен идентификатором 3 для карьеры пожарного. Когда пользователь выбирает Fire fighter, ваш SQL будет ставить 3 в строке «и вот я потерян» из вашего поста.

Если проблема в том, что вы собираете новые значения, вы должны сначала ввести их, получить номер идентификатора вновь вставленной карьеры (вы используете auto_increment (MySQL), sequence (Oracle) или identity ( SQL Server) для этих значений IDCareer, да?) Используя любую функцию, возвращает последнее вставленное значение идентификатора и помещает это в ваше «и здесь я потерян».

2 голосов
/ 03 октября 2009

Обычно вы бы сказали, что comboBox связан со значениями таблицы карьеры.

вы можете настроить ComboBox.

Текущее значение с использованием свойства ValueMember. Текст каждого элемента со свойством DisplayMember.

Затем вы можете вызвать cbo.SelectedValue для получения значения, выбранного Career.

// Configure comboBox
DataTable dtCareer = GetCareerTable();
cboCareer.DataSource = dtCareer;
cboCareer.DisplayMember = "CareerName";
cboCareer.ValueMember = "IDCareer";



// Get selected career
if (cboCareer.SelectedIndex != -1) {
    int career = (int) cboCareer.SelectedValue;
    // Do your insert here
}
1 голос
/ 03 октября 2009

Если у вас есть выпадающий список, то вам, вероятно, не нужно ничего вставлять во вторую таблицу, поскольку у вас уже будет значение идентификатора из этого. Все, что вам нужно сделать, это вставить в ваш основной стол с помощью:

INSERT INTO User (Name, Email, Telephone, IDCareer) VALUES ('person', 'email@domain.com', '1234', 45);

Если, однако, вы хотите создать новую запись в иностранной таблице (т.е. вы позволяете им создать новый тип карьеры) - тогда вы можете настроить ее как транзакцию и вставить в свой «чужой» сначала таблицу, получите идентификатор, затем вставьте в основной и используйте только что полученный идентификатор.

1 голос
/ 03 октября 2009

Вы должны вставить первичный ключ таблицы карьеры, т.е. значение для IDCareer.

Естественно, нужно заполнить поле со списком значениями из таблицы Career - отобразить значения из столбца CareerName, но сохранить значения из столбца IDCareer. Когда пользователь выбирает карьеру, возьмите значение IDCareer (возможно, целое число), а затем сохраните его в таблице User.

Добавление новых профессий в таблицу «Карьера» - это, как правило, другое занятие, выполняемое в другой форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...