powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как вставить внешний ключ?
10 сообщений из 10, страница 1 из 1
Как вставить внешний ключ?
    #33403015
гудвин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть в базе данных 2 таблицы:
Lecture(code_l, number, name)
Section(code_s, number, name, code_l)

code_l и code_s - ключи, генерируются автоматически (identity=yes)
Отношение между таблицами 1:М.

Код xml-

<Lecture number="5" name="zzz">
<Section Number="1" Name="vbncv">
</Section>
</Lecture>


как занести данные из файла в таблицу Lecture c помощью openxml - понятно.
Но у меня вопрос:
как занести данные в Section c помощью openxml, а главное - внешний ключ code_l?
...
Рейтинг: 0 / 0
Как вставить внешний ключ?
    #33412226
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я че то в вопрос не въехал.
если в одну таблицу данные заносишь, то в чем проблема с другой?

покажи код - обсудим...

p.s. давно на этот топик смотрел - и тихо ржалллллллллллллл...
...
Рейтинг: 0 / 0
Как вставить внешний ключ?
    #33412577
гудвин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исходный текст:

declare @doc varchar(1000)
declare @idoc int
set @doc=
'<Lecture number="7" name="лекция 1">
<Section number="1" name="Секция 1">
</Section>
<Section number="2" name="Секция 2">
</Section>
--</Lecture>'

...
insert Lecture
Select *
from openxml(@idoc, '/Lecture', 3)
with Lecture
-- сюда все заносится нормально.
то есть в таблице Lecture появятся такие значения:
1 "7" "лекция 1"
единичка - это ключ. Генерируется автоматически.

В таблицу Section должны быть занесены такие значения:
"1" "Секция 1" 1
"2" "Секция 2" 1

последняя единичка - внешний ключ. В самом файле xml он ведь не присутствует. Как с помощью openxml занести эти данные?
...
Рейтинг: 0 / 0
Как вставить внешний ключ?
    #33413332
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если ключи генерятся сервером то никак. Нужно будет руками всё разбирать. Вставить лекцию, вставить все секции этой лекции и так по всем лекциям в цикле. Либо в хмл уже должны быть ключи
...
Рейтинг: 0 / 0
Как вставить внешний ключ?
    #33413649
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1024если ключи генерятся сервером то никак. Нужно будет руками всё разбирать. Вставить лекцию, вставить все секции этой лекции и так по всем лекциям в цикле. Либо в хмл уже должны быть ключи

какие циклы, блин?
а кто будет использовать возможности великого и могучего T-SQL и xPath?

даю мысль, а дальше гудвин попытайся ее сам развить:
если знаешь T-SQL (надеюсь речь о MS SQL Server 2k идет - если нет - твои проблемы - надо подробней в топике описывать), то нужно просто более тонко управлять OPENXML - вот и все.

к примеру ты пишешь
Код: plaintext
1.
2.
3.
insert Lecture 
Select *
from openxml(@idoc, '/Lecture',  3 )
with Lecture

а ты попробуй, например:
Код: plaintext
1.
2.
3.
4.
5.
insert табличка1
FROM OPENXML(@iDoc, '/root/Section') WITH(назв-поля1 int '@Number', назв-поля2nvarchar( 256 ) '@Name')

insert табличка2
FROM OPENXML(@iDoc, '/root/Lecture') WITH(назв-поля1 int '@Number', назв-поля2nvarchar( 256 ) '@Name')
...
Рейтинг: 0 / 0
Как вставить внешний ключ?
    #33413660
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1024если ключи генерятся сервером то никак

почему никак? пусть он задачу подробнее опишет. если там identity, то можно использовать SET IDENTITY ON

главное не извращаться и написать все как можно проще, лаконичнее и быстрее (я про скорость выполнения)
...
Рейтинг: 0 / 0
Как вставить внешний ключ?
    #33413798
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по разному можно. Но так как звучит вопрос "вставить иерархические данные чтоб они сами по табличкам разложились" - нельзя. Надо писать какое-то преобразование
...
Рейтинг: 0 / 0
Как вставить внешний ключ?
    #33414324
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1024так звучит вопрос - "вставить иерархические данные чтоб они сами по табличкам разложились"

Да ты что, неужели? Чтобы все само разложилось? А зачем такая профессия как программист нужна если все само делается? Ты в каком топике такой вопрос нашел?

p.s. если хочешь продолжать полемику, то тогда прошу пожаловать в раздел "треп", а засирать новый раздел форума не надо.
...
Рейтинг: 0 / 0
Как вставить внешний ключ?
    #33416699
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда... 8(
...
Рейтинг: 0 / 0
Как вставить внешний ключ?
    #33458430
baggystyle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для этого дела updategrams очень хорошо подходят - просто ставите общую метку для связываемых элементов, а MS SQL сам поставит правильные значения
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как вставить внешний ключ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]