#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 Да, это правильный способ добавления внешнего ключа…