Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 5
Регистрация: 30.04.2007
Сообщений: 225

Уникальность идентификаторов в нескольких таблицах.

06.05.2008, 23:58. Показов 2038. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Стоит задача: при вставке записей порождать целочисленные primary key, уникальные для нескольких (!!) таблиц. В оракле это решалось порождением ключей из одной и той же последовательности, а вот когда пришлось переползать на mssql2000, возникли трудности... Может быть всё же существует изящное решение? (неизящно уже сделали)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.05.2008, 23:58
Ответы с готовыми решениями:

Поменять значения идентификаторов в нескольких таблицах циклом
Доброго времени суток. Вот сделал такую выборку как на картинке, джойнил две таблицы. Я хочу поменять значения столбцов id и point_id...

хранение нескольких идентификаторов для одного элемента БД
Ситуация такая. Есть один элемент. Он может содержаться в нескольких базовых элементах. Т.е. для этого элемента нужно в БД хранить...

Удаление в нескольких таблицах
Существуют такие таблицы: Написал такое удаление: delete from goodsProducer as GP, Box_key as BK, postawki as p, PrevStore as PS,...

9
ex
07.05.2008, 15:55
Не знаю уж насколько решение покажется изящным..
Пусть у Вас N таблиц, для которых Вы хотите обеспечить уникальность первичных ключей, тогда:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE MyTable_1
    (ID_1 int IDENTITY (1, N) PRIMARY KEY, 
     ...)
 
CREATE TABLE MyTable_2
    (ID_2 int IDENTITY (2, N) PRIMARY KEY, 
     ...)
 
CREATE TABLE MyTable_N
    (ID_N int IDENTITY (N, N) PRIMARY KEY, 
     ...)
ID_i не будут повторятся (0 < i < N + 1)
3 / 3 / 1
Регистрация: 06.11.2007
Сообщений: 75
28.05.2008, 18:28
Можно сделать лучше. Два варианта:
1- сделать дополнительную таблицу с одним полем типа LastID и процедуру, кот. будет возврашать следующий ID и изменять значение в таблице.
Но, есть в SQL 2000 user-defind функции. Т.е. можно написать ф-цию выч. значение следующего ID. На том же T-SQL.
0
ex
28.05.2008, 18:30
Чем же это лучше???
Зачем дополнительные действия?
Тем более таблицы.. функции...
3 / 3 / 1
Регистрация: 06.11.2007
Сообщений: 75
28.05.2008, 18:39
Лучше тем, что при интенсивном использовании таблиц в вашем случае быстрее будет достигнут верхний предел ID в одной из таблиц и тогда потеряется целостность базы. В то время как в моем варианте интенсивность использования может быть разная и целостность не утратиться (в функции можно сгенерировать ошибку переполнения).
0
ex
28.05.2008, 18:46
Тип int может принимать значения вплоть до 2^31 - 1 (2147483647).
Тип bigint - до 2^63-1 (9223372036854775807).
Достигнуть верхнего предела нам не грозит!!

P.S. Насчет того, что 'в функции можно сгенерировать ошибку переполнения'... Чем она (сгенеренная Вами) лучше той, которую выкинет сам SQL-Server, если вдруг всё-таки кончатся свободные значения?
3 / 3 / 1
Регистрация: 06.11.2007
Сообщений: 75
28.05.2008, 18:54
Прошу прощения...
Забыл синтаксис IDENTITY... Посмотрел - все понял...
Ваш вариант действительно лучше. Просто я не люблю поля IDENTITY.
0
ex
28.05.2008, 19:03
Как их можно любить или не любить? )
Это все равно, что не любить первичные ключи..
За что?...
3 / 3 / 1
Регистрация: 06.11.2007
Сообщений: 75
28.05.2008, 19:12
Ну, просто я ими (IDENTITY) никогда не пользуюсь...
0
1 / 1 / 5
Регистрация: 30.04.2007
Сообщений: 225
31.05.2008, 00:05  [ТС]
Спасибо. Видимо, более изящного решения нет. В моём случае была написана процедура, порождающая новый ключ из дополнительной таблицы с identity-полем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.05.2008, 00:05
Помогаю со студенческими работами здесь

Поиск в нескольких таблицах
Доброго времени суток, помогите написать sql поиска в нескольких таблицах так все работает, но естественно это из 1 таблицы $result = ...

Поиск в нескольких таблицах
Задача такова Имеем БД, на форме ADOTable. необходимо провести поиск сразу по нескольким столбцам и получить быбор сразу нескольких...

Фильтрация данных в нескольких таблицах
Добрый день форумчане. Прошу о помощи!!!!! есть 6 таблиц в экселе с данными. &quot;заявления на листы&quot;,&quot;забранные...

Поиск данных в нескольких таблицах
Доброго времени суток! Никак не получается сделать поиск из нескольких таблиц. После компиляции при попытке выполнить запрос появляется...

Посик по сайту в нескольких таблицах
Бен, ай нид хелп. Запрос: $result = mysql_query(&quot;(SELECT * FROM `data` WHERE `text` LIKE '%$search%' OR `title` LIKE '%$search%' OR...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru