|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
Здравствуйте. Существует таблица с забитыми данными, мне необходимо завести новое поле ID и сделать его первичным. Создаю данное поле, жмакую галочку на Primary key, выбираю тип integer и соответственно при создании такого поля выскакивает ошибка, так как значения не могут быть null. Пробовал создать поле ID без указания первички, генератором заполнил пустые значения, но после данных действий пропадает возможность в данном поле поставить галочку Primary Key. С IBExpert сталкиваюсь редко, подскажите как быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 15:48 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
добавляешь поле (без NOT NULL) инициализируешь его нужными значениями. альтеришь поле (ставишь признак NOT NULL) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 15:55 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
Explosion, учите SQL (DDL в частности). В IBE первичный ключ можно добавить позже на закладки "ограничения". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 16:02 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
Не, ну я так не играю. Альтеры всякие, адды... Что, трудно сказать какую галку нажмакнуть? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 21:58 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, сказать трудно, надо нарисовать ) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 22:10 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
Симонов Денис Старый плюшевый мишка, сказать трудно, надо нарисовать ) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 22:39 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
Добавление первичного ключа делается командой: Код: plsql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 23:20 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
Пишу: Код: sql 1.
Выскакивает ошибка: The insert failed because a column definition includes validation constraints. validation error for column ID, value "*** null ***". Прошелся по форуму: https://www.sql.ru/forum/939734/problema-s-insert-na-primary-key-validation-error-for-column-value-null Вроде как дело в не созданом автоинкрименте. Создал генератор. На триггер вставки повесил такой код: Код: sql 1. 2. 3. 4. 5.
По прежнему ругается. Когда делаю через вкладку costraint, аналогичная ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 07:08 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
Триггер на заполнение ID - это хорошо. Но он будет срабатывать только при вставке записи. Прежде чем объявить поле первичным ключом нужно что бы данные уже в нем находящиеся - соответствовали требованиям первичного ключа. - в поле ID не должно быть значений NULL - в поле ID не должно быть повторяющихся значений Только приведя данные в поле к этим требованиям, можно навешивать ограничение NOT NULL и объявлять первичный ключ. Если не ошибаюсь, то сообщение об ошибке говорит что в поле ID присутствует NULL. Поискать такие значения можно запросом Код: plsql 1. 2. 3.
ну а что бы мы тут меньше гадали про вашу ситуацию - приведите сюда скрипт таблицы, из IBExpert, с вкладки "Скрипт". Весь. Начинается он так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 07:27 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
Проверил: - поле ID проставлено как not null; - в поле ID нет повторяющихся значений; - в поле ID нет пустых значений. Скрипт: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 07:50 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
Попытался для автора сделать воспроизводимый тест, однако уперся в ту же самую ошибку что и у автора. Вывод - в Firebird-2.5.8-32 (который у меня стоит) объявить первичный ключ на таблице с данными невозможно. Команда alter table выдает ошибку: авторThe insert failed because a column definition includes validation constraints. validation error for column ID, value "*** null ***". Попытка объявить первичный ключ гуевыми средствами IBExpert заканчивается ровно тем же, по той же самой причине - IBexpert дает ту же самую команду. Скрипт теста: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51.
Что делать. Если у таблицы нет связей, то я был создал клон таблицы, сразу с первичным ключом, заполнил бы данными из исходной, при этом ID заполнился бы из генератора. Ну и потом грохнул бы исходную, воссоздал обратно с нужными полями и первичным ключом, и перелил данные обратно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 08:32 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
В этом и проблема. Это и есть таблица-клон. Оригинал таблицы был создан прошлым программистом с первичным ключом DISP_GROUP (праймори кей = текстовое поле =]). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 09:04 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
fraks, на WI-V6.3.6.27020 Firebird 2.5 твой скрипт прошел без проблем ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 09:12 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
У меня fbserver.exe версии 2.5.8.27089 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 09:25 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
У меня частенько было так, когда пытался unique ограничения навешивать на таблицы, так же ругался сервер что есть повторяющиеся значения, хотя я их убрал. Я думаю это из за старых версий записей, в которых были ранее значения null. Сделай sweep, и еще раз выполни команду по созданию PK. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 10:07 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
В моем скрипте после update сделал реконнект - и первичный ключ на таблице с данными создался. Точнее говоря команда Код: plsql 1. 2.
выполнилась без ошибок. Видимо действительно версии записей мешали. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 10:31 |
|
IBExpert. Добавить Primary key в таблицу с данными.
|
|||
---|---|---|---|
#18+
fraks, ребята, ну вы чего? Индекс создается по всем существующим на данный момент в таблице версиям. Поэтому пока старые версии с null не убраны как мусор, индекс (pk, unique) не создастся, он будет видеть эти самые версии с null. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 12:15 |
|
|
start [/forum/topic.php?fid=40&fpage=18&tid=1560494]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 182ms |
0 / 0 |