Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подскажите как правильно написать ХР  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
В базе есть таблица например Test в нее записываются данные о проектах и создаются необходимые для данных проекта таблицы программно из например админской части сайта ASP.NET

поля
id bigint,
title nvarchar(50),
date datetime,
tablename nvarchar(50)



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

Как правильно написать что бы при удалении строки в таблице Test так же удалялась таблица которая указана в поле tablename

Что то наподобие вот такого

CREATE PROCEDURE DelItem
   @id bigint
as
begin
    DELETE FROM Test WHERE id=@id
    DROP TABLE (select tablename from Test WHERE id=@id)
end



Спасибо.
24 апр 13, 11:17    [14222636]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как правильно написать ХР  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
VIT2708
создаются необходимые для данных проекта таблицы программно
зачем? почему нельзя данные разных проектов в одной таблице держать? добавить туда поле ProjectId и всего делов
24 апр 13, 11:21    [14222669]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как правильно написать ХР  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Паганель
VIT2708
создаются необходимые для данных проекта таблицы программно
зачем? почему нельзя данные разных проектов в одной таблице держать? добавить туда поле ProjectId и всего делов


Количество полей может быть разное, да и сами проекты не похожы друг на друга да и наперед я не могу знать какую таблицу мне дадут вот и хочу для каждого проекта создавать таблицу и грузить в нее данные а запросы уже строить динамически(ничего страшного в этом не вижу так как этот сайт внутрикорпоративный)
24 апр 13, 11:27    [14222715]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как правильно написать ХР  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
как можно создавать таблицу не зная количество полей?
что значит "мне дадут таблицу" если Вы сами ее создаете?

нельзя ли создать одну таблицу для всевозможных разных проектов, со всеми возможными полями,
пусть даже многие из них во многих записях будут null-ы содержать?
24 апр 13, 11:32    [14222751]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как правильно написать ХР  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Паганель
как можно создавать таблицу не зная количество полей?
что значит "мне дадут таблицу" если Вы сами ее создаете?

нельзя ли создать одну таблицу для всевозможных разных проектов, со всеми возможными полями,
пусть даже многие из них во многих записях будут null-ы содержать?

Как раз так и случается с архитектурой БД когда ее строят разработчики ASP.NET
24 апр 13, 11:38    [14222794]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как правильно написать ХР  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Паганель,

Данные приходят в excel первоначальные данные похожы но результирующие данные очень разные. Сам excel легко парсится но проще создать временно таблицу в базе чем работать с excel так как пользователей приблизительно 40-100 и они не сидят в одном офисе
24 апр 13, 11:38    [14222795]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как правильно написать ХР  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
VIT2708
В базе есть таблица например Test в нее записываются данные о проектах и создаются необходимые для данных проекта таблицы программно из например админской части сайта ASP.NET

поля
id bigint,
title nvarchar(50),
date datetime,
tablename nvarchar(50)



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

Как правильно написать что бы при удалении строки в таблице Test так же удалялась таблица которая указана в поле tablename

Что то наподобие вот такого

CREATE PROCEDURE DelItem
   @id bigint
as
begin
    DELETE FROM Test WHERE id=@id
    DROP TABLE (select tablename from Test WHERE id=@id)
end



Спасибо.


в вашей процедуре такой дроп можно сделать, но скажем при помощи курсора и в динамическом запросе типа EXEC, и кроме того вы поступаете странно, сначала удаляете все записи из таблицы с ид=@id, а потом пытаетесь их выбрать.
24 апр 13, 11:39    [14222805]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как правильно написать ХР  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Maxx
Паганель
как можно создавать таблицу не зная количество полей?
что значит "мне дадут таблицу" если Вы сами ее создаете?

нельзя ли создать одну таблицу для всевозможных разных проектов, со всеми возможными полями,
пусть даже многие из них во многих записях будут null-ы содержать?

Как раз так и случается с архитектурой БД когда ее строят разработчики ASP.NET


Ну и как же ее правильно построить если первоначальные данные похожы даже иногда колонки в excel одинаковы а результаты аналыза данных разные?
24 апр 13, 11:40    [14222816]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как правильно написать ХР  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Winnipuh
VIT2708
В базе есть таблица например Test в нее записываются данные о проектах и создаются необходимые для данных проекта таблицы программно из например админской части сайта ASP.NET

поля
id bigint,
title nvarchar(50),
date datetime,
tablename nvarchar(50)



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

Как правильно написать что бы при удалении строки в таблице Test так же удалялась таблица которая указана в поле tablename

Что то наподобие вот такого

CREATE PROCEDURE DelItem
   @id bigint
as
begin
    DELETE FROM Test WHERE id=@id
    DROP TABLE (select tablename from Test WHERE id=@id)
end



Спасибо.


в вашей процедуре такой дроп можно сделать, но скажем при помощи курсора и в динамическом запросе типа EXEC, и кроме того вы поступаете странно, сначала удаляете все записи из таблицы с ид=@id, а потом пытаетесь их выбрать.



Так это пример

я имел ввиду наоборот

1 DROP TABLE (select tablename from Test WHERE id=@id)
2 DELETE FROM Test WHERE id=@id
24 апр 13, 11:42    [14222832]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как правильно написать ХР  [new]
Гость333
Member

Откуда:
Сообщений: 3683
CREATE PROCEDURE DelItem
   @id bigint
as
begin
   DECLARE @tablename nvarchar(50);
   SELECT @tablename = t.tablename FROM Test t WHERE t.id = @id;
   IF @@ROWCOUNT = 1
   BEGIN
      EXEC(N'DROP TABLE ' + @tablename);
      DELETE FROM Test WHERE id=@id;
   END
   ELSE
      RAISERROR('Error', 11, 1);
end
24 апр 13, 11:48    [14222884]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как правильно написать ХР  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
VIT2708
Данные приходят в excel первоначальные данные похожы но результирующие данные очень разные
но с этими результирующими данными надо же потом еще что-то делать
а структура их неизвестна, как же к ним потом обращаться?
24 апр 13, 11:52    [14222918]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как правильно написать ХР  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Гость333,

Спасибо
24 апр 13, 12:01    [14223003]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как правильно написать ХР  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Паганель
VIT2708
Данные приходят в excel первоначальные данные похожы но результирующие данные очень разные
но с этими результирующими данными надо же потом еще что-то делать
а структура их неизвестна, как же к ним потом обращаться?


Со стороны клиента и динамически(другого выхода нет)
24 апр 13, 12:02    [14223012]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как правильно написать ХР  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
как это выхода нет, я ж его предложил (куча null-овых полей, почему нет)
24 апр 13, 12:09    [14223080]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как правильно написать ХР  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
VIT2708,

Таблицы удалять не надо. Стоимость их присутствия в БД -- ноль.
Удаляй из таблицы данные. Этого будет достаточно.
Таблицу надо делать одну, а не 10-20 с одинаковой структурой.
24 апр 13, 12:14    [14223139]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить