как добавить внешний ключ, используя существующий столбец в mysql

#mysql

#mysql

Вопрос:

У меня есть следующая таблица с именем transactions, и я хочу добавить внешний ключ, используя столбец account_id. Но когда я выполняю запрос (см. Ниже), затронуты 0 строк. Я не понимаю, что не так с запросом.

У меня есть две таблицы, называемые транзакциями и учетными записями. Таблица Accounts имеет идентификатор в качестве первичного ключа, а учетная запись имеет множество транзакций.

таблица транзакций

  --------------------- -------------- ------ ----- --------- ---------------- 
| Field               | Type         | Null | Key | Default | Extra          |
 --------------------- -------------- ------ ----- --------- ---------------- 
| id                  | int(11)      | NO   | PRI | NULL    | auto_increment |
| account_number      | int(11)      | YES  |     | NULL    |                |
| m_number            | varchar(255) | YES  |     | NULL    |                |
| registration_number | varchar(255) | YES  |     | NULL    |                |
| page_number         | varchar(255) | YES  |     | NULL    |                |
| entry_date          | datetime     | YES  |     | NULL    |                |
| narration           | varchar(255) | YES  |     | NULL    |                |
| voucher_number      | varchar(255) | YES  |     | NULL    |                |
| debit_credit        | float        | YES  |     | NULL    |                |
| profit              | float        | YES  |     | NULL    |                |
| account_code        | int(11)      | YES  |     | NULL    |                |
| balance             | float        | YES  |     | NULL    |                |
| branch              | varchar(255) | YES  |     | NULL    |                |
| account_id          | int(11)      | YES  | MUL | NULL    |                |
| created_at          | datetime     | YES  |     | NULL    |                |
| updated_at          | datetime     | YES  |     | NULL    |                |
 --------------------- -------------- ------ ----- --------- ---------------- 
16 rows in set (0,01 sec)

mysql> ALTER TABLE transactions ADD FOREIGN KEY (account_id) REFERENCES accounts(id);
Query OK, 0 rows affected (0,03 sec)
Records: 0  Duplicates: 0  Warnings: 0
  

таблица учетных записей

  ----------------- -------------- ------ ----- --------- ---------------- 
| Field           | Type         | Null | Key | Default | Extra          |
 ----------------- -------------- ------ ----- --------- ---------------- 
| id              | int(11)      | NO   | PRI | NULL    | auto_increment |
| account_number  | int(11)      | YES  |     | NULL    |                |
| account_code    | int(11)      | YES  |     | NULL    |                |
| branch          | varchar(255) | YES  |     | NULL    |                |
| name            | varchar(255) | YES  |     | NULL    |                |
| father_name     | varchar(255) | YES  |     | NULL    |                |
| nic_number      | varchar(255) | YES  |     | NULL    |                |
| mohalla         | varchar(255) | YES  |     | NULL    |                |
| village         | varchar(255) | YES  |     | NULL    |                |
| nominee         | varchar(255) | YES  |     | NULL    |                |
| relationship    | varchar(255) | YES  |     | NULL    |                |
| opening_balance | float        | YES  |     | NULL    |                |
| opening_date    | datetime     | YES  |     | NULL    |                |
| created_at      | datetime     | YES  |     | NULL    |                |
| updated_at      | datetime     | YES  |     | NULL    |                |
 ----------------- -------------- ------ ----- --------- ---------------- 
  

После выполнения запроса не должен ли столбец указывать F_K или что-то вроде PRI?
Любая помощь была бы отличной. Спасибо!

Комментарии:

1. ваш запрос в порядке. 0 rows affected просто означает, что данные ни в одной из строк не были изменены, что является желаемым результатом при добавлении внешнего ключа

2. ПОКАЗАТЬ транзакции CREATE TABLE; ваш запрос совершенно правильный, но не влияет ни на одну строку в базе данных, поэтому возвращает 0 rows affected

3. о, глупый я! Но является ли это правильным способом добавления внешнего ключа, когда столбец и таблицы существуют?

4. @amjad Да, это правильный способ добавления внешнего ключа…