Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 September 18

.

.. in SqlCom.ru - Стиль жизни SQL
Денис Лёвкин
Если база относительно средних размеров, наверное проще перегнать данные в новую базу аналогичной структуры, где вообще отсутствует ссылочная целостность, identity и индексы. Затем обновить ключи и затем накатить структуру. На личном опыте - redgate в плане структуры позволяет всё быстро сделать
Базы у нескольких клиентов, структуры одинаковые, но подключение удалённое и по времени желательно побыстрее соответственно завершить этот удаленный сеанс)
Думаю, в моем случае, проще написать скрипт на создание поля, где задам ему значения от 1 ,  удалить старое, сделать новое Identity и заменить имя у нового на то которое было у старого. Надеюсь, удалить такое поле, которое Identity, можно. Именно это поле не ключ ни для кого и неважно какое значения были, важно чтобы стали с 1.
источник

N

Nichose in SqlCom.ru - Стиль жизни SQL
Nichose
drop table #tmp

create table #tmp(i int identity(1,1), j int)

insert into #tmp(j)
values(55),(66),(77)

select * from #tmp

set identity_insert #tmp on

insert into #tmp(i, j)
select i + 50, j from #tmp

set identity_insert #tmp off

delete #tmp where i<50

select * from #tmp
ну и не забываем в конце вызвать
DBCC CHECKIDENT ('#tmp', RESEED, 53);
источник

.

.. in SqlCom.ru - Стиль жизни SQL
Nichose
drop table #tmp

create table #tmp(i int identity(1,1), j int)

insert into #tmp(j)
values(55),(66),(77)

select * from #tmp

set identity_insert #tmp on

insert into #tmp(i, j)
select i + 50, j from #tmp

set identity_insert #tmp off

delete #tmp where i<50

select * from #tmp
Спасибо, подумаю, может так сделаю. Задачу дали в конце дня, думал это дело пяти минут, а все затянулось и теперь только в понедельник попробовать смогу)
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
..
Спасибо, подумаю, может так сделаю. Задачу дали в конце дня, думал это дело пяти минут, а все затянулось и теперь только в понедельник попробовать смогу)
если не секрет цель то какая? :)
источник

Д

Денис Лёвкин... in SqlCom.ru - Стиль жизни SQL
Если есть ссылочная целостность  - нужно убрать ссыл.целост
- убить индексы
- добавляем к нужным таблицам новый столбец, копируем текущие ид( поможет при обновлении)
- отключаем идентити
- меняем значения в ключевых полях
- восстановить идентити, ссыл.целостност, индексы

Всё не так просто
источник

.

.. in SqlCom.ru - Стиль жизни SQL
Андрей Агеев
если не секрет цель то какая? :)
Сейчас объясню как наверное сначала нужно было сразу объяснить)
Есть таблица с клиентами, в ней есть id клиента, куча иных полей, и поле number. Какой у кого number в принципе не сильно важно (если поменять его один раз), но клиентам (нашим, не тем, которые в таблице:) )  нужно чтобы нумерация шла от 1. Видимо, когда им ставили программу и вносили данные поверх чистой (относительно)БД по имеющимся клиентам - счётчик никто не сбрасывал, и он всегда был не с 1.
источник

N

Nichose in SqlCom.ru - Стиль жизни SQL
Андрей Агеев
если не секрет цель то какая? :)
Как я понял, хотят чтобы id колонка 1 начиналась, сквозная нумерация
источник

Д

Денис Лёвкин... in SqlCom.ru - Стиль жизни SQL
И ещё небойсь на будущее чтобы пропусков не было. И всё на идентити😀
источник

.

.. in SqlCom.ru - Стиль жизни SQL
Денис Лёвкин
Если есть ссылочная целостность  - нужно убрать ссыл.целост
- убить индексы
- добавляем к нужным таблицам новый столбец, копируем текущие ид( поможет при обновлении)
- отключаем идентити
- меняем значения в ключевых полях
- восстановить идентити, ссыл.целостност, индексы

Всё не так просто
Само поле, значение которого нужно поменять, в ссылочной целостности не участвует, к счастью. Поэтому, как я описал выше, хочу попробовать сделать новое поле с правильными значения и просто удалить старое, оставить новое поле)
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
если баз несколько то возможно не только не с 1 нумерация, но и что в разном порядке сущности
источник

N

Nichose in SqlCom.ru - Стиль жизни SQL
Денис Лёвкин
И ещё небойсь на будущее чтобы пропусков не было. И всё на идентити😀
Ага :) ну тут только sequence + осмысленная логика
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
потом скажут у одних и тех же клиентов разные номера получились
источник

.

.. in SqlCom.ru - Стиль жизни SQL
Андрей Агеев
потом скажут у одних и тех же клиентов разные номера получились
Не, не должны. Одна база - один наш клиент.
Хотя было недавно,что у одного нашего клиента три базы сливали в одну, и установить совпадения каких то сущностей можно только по имени, коду, и прочим не сильно предназначенным для этого полям - у каждой таблицы по-разному, и в целом все запутанно. Я ещё сюда обращался с вопросами, как вообще это сделать. Если сказать кратко, как это сделать - много говноскриптов, куча ошибок после слияния, примерно так 😅
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
..
Не, не должны. Одна база - один наш клиент.
Хотя было недавно,что у одного нашего клиента три базы сливали в одну, и установить совпадения каких то сущностей можно только по имени, коду, и прочим не сильно предназначенным для этого полям - у каждой таблицы по-разному, и в целом все запутанно. Я ещё сюда обращался с вопросами, как вообще это сделать. Если сказать кратко, как это сделать - много говноскриптов, куча ошибок после слияния, примерно так 😅
Осталось потренироваться на кошках и не забыть про бэкапы =)
источник

.

.. in SqlCom.ru - Стиль жизни SQL
Андрей Агеев
Осталось потренироваться на кошках и не забыть про бэкапы =)
В понедельник начну)
источник

.

.. in SqlCom.ru - Стиль жизни SQL
Бекапы это вообще то, что постоянно у себя локально ставлю, мучаю, удаляю и по-новой))
источник

KS

Kodd Shredinger in SqlCom.ru - Стиль жизни SQL
..
Бекапы это вообще то, что постоянно у себя локально ставлю, мучаю, удаляю и по-новой))
Локально-это жопа
источник
2020 September 19

IL

Ilgga Latypovv in SqlCom.ru - Стиль жизни SQL
Можно ли сделать primary key с Null?
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
Ilgga Latypovv
Можно ли сделать primary key с Null?
Это противоречит его определению и назначению.
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
The PRIMARY KEY constraint uniquely identifies each record in a table. Primary keys must contain UNIQUE values, and cannot contain NULL values.
источник