Say У меня есть 3 таблицы, как в следующем:Как реализовать «мастер» значение Id в столбце таблицы базы данных
Person
PersonId INT [PK, уникальный Clust IDX, идентичности да]
PersonName VARCHAR (50) [ненулевой]
ContactId INT [уникальный, не Clust IDX, ненулевая, FK связаться таблицы ContactId колонка]
Компания
CompanyID INT [PK, уникальный Clust IDX, идентичность да]
НазваниеКомпания VARCHAR (100) [ненулевая]
ContactId INT [уникальный, не Clust IDX, ненулевой, FK связаться столбец ContactId таблицы]
Контакт
ContactId INT [PK, уникальный Clust IDX, идентичность да]
CreatedDate DATETIME [ненулевой, значение по умолчанию GETDATE()]
Я покажу желаемые конечные результаты в течение следующих 3-х операций вставки (начиная со всеми пустыми таблицами) ...
я вставить строку в Person, и хотите, чтобы в конечном итоге с:
Person стол -
PersonId 1
PERSONNAME 'первого лица'
ContactId 1
Контактная таблица -
Контактное лицо 1
CreatedDate getdate() value
Затем я вставить строку в компании, и хотите, чтобы в конечном итоге с:
таблице компании - CompanyID 1
COMPANYNAME 'Первая компания'
ContactId 2
Контакт таблицы - ContactId 2
CreatedDate getdate() value
Я вставляю второй ряд в Person и wan т в конечном итоге с:
Person стол - PersonId 2
PERSONNAME 'Второе Лицо'
ContactId 3
Контактная таблица - 3 значение ContactId
CreatedDate GETDATE()
Надеюсь, что вышеизложенное дает понять, что я пытаюсь выполнить, т.е., Я хочу использовать таблицу контактов как своего рода механизм типа «уникальный генератор значений», так сказать, чтобы каждый раз, когда я вставлял строку в Person или Company (или любые дополнительные таблицы, которые я хотел бы поместить аналогичный столбец ContactId в), каждое значение ContactId в любой/всех этих таблицах будет уникальным.
Что было бы самым эффективным способом для этого? Можно ли это сделать с помощью триггеров в таблицах Person и Company, чтобы я мог выполнять только одну операцию вставки из моего кода приложения (и если да, то каким будет выглядеть код запуска)? Или мне всегда придется выполнять несколько операций ввода-вывода из кода приложения, в котором я сначала вставляю строку в таблицу контактов, возвращаю значение scope_identity() обратно, а затем использую это значение для значения ContactId для вставки в Person или компании? Или какая-то другая методология, которая лучше, чем любая из этих?
Любые идеи очень ценятся!
Кроме того, я извиняюсь для форматирования моего поста - я попытался использовать возврат каретки, но они не кажутся «принять» ... – user2075599
um ... один второстепенный вопрос, как точно убедиться, что возврат каретки «работает» в сообщениях? Я искал FAQ и ничего не видел об этом ... – user2075599