|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
Добрый день. Ранее с триггерами не сталкивался. Сейчас необходимо написать: есть таблица А в которую происходит insert данных. Таблица состоит из столбцов (id, volume). Необходимо написать триггер который в момент вставки данных в таблицу А будет вставлять эти же данные в таблицу с именем равным id, а если данной таблицы не существует будет ее создавать и записывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 10:23 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
emolenev вставлять эти же данные в таблицу с именем равным id, а если данной таблицы не существует будет ее создавать и записывать. Кто бы это не придумал, устройте ему темную. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 10:28 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
msLex, Это вообще возможно? никогда не имел дело с триггерами. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 10:33 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
emolenev msLex, Это вообще возможно? никогда не имел дело с триггерами. Можно, но не нужно Для начала я бы задался вопросом: "нахрена нужна куча таблиц с "именем равным id", да еще и создающихся динамически?". Что вы потом с ними делать будете? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 10:36 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
msLex emolenev msLex, Это вообще возможно? никогда не имел дело с триггерами. Можно, но не нужно Для начала я бы задался вопросом: "нахрена нужна куча таблиц с "именем равным id", да еще и создающихся динамически?". Что вы потом с ними делать будете? Похоже, что выводить в Эксель на разные листы ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 11:31 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
emolenev msLex, Это вообще возможно? никогда не имел дело с триггерами. Можно. Но это НЕправильный подход. Вы можете выбирать данные по условию : select ... from ... WHERE id = <значение id>; И если, действительно, Вам надо забирать данные из Экселя ,- используйте условие для получения нужного блока данных в нужном месте. Если у Вас онлайн-система мобильной торговли и надо раскидывать данные по продаванам по факту получения заказов (ну, или что-то иное реальное для тиражирования и проч..),- не мудрите велосипед, - пишите в раздел "Работа". ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 11:37 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
SIMPLicity_, в таблице с полумиллиардом строк оперативно получить данные по id не получается :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 11:44 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
Триггер выдает ошибку Invalid object name 'INSERTED'. CREATE TRIGGER [dbo].[TB_INSERT] ON [dbo].[TB] AFTER INSERT as IF @@ROWCOUNT=0 return BEGIN DECLARE @table_name sysname SET @table_name=(SELECT Id FROM INSERTED) if OBJECT_ID(@table_name) IS NULL AND OBJECTPROPERTY(OBJECT_ID(@table_name), 'IsTable') <> 1 exec('CREATE TABLE [dbo].['+ @table_name +'] ([ID] [smallint] NOT NULL,[VALUE] [float] NULL) exec('INSERT INTO ['+ @table_name +'] SELECT * FROM INSERTED') END ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 11:49 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
emolenev SIMPLicity_, в таблице с полумиллиардом строк оперативно получить данные по id не получается :) при наличии правильного индекса ничем не отличается от чтения данных из разных таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 12:13 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
msLex, Например? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 12:17 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
msLex, Таблица (дата время, id, значение) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 12:18 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
emolenev, А секции по какому полю нарезаны? И по каким полям к таблице чаще идёт обращение? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 12:57 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
env, дата время, id ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 13:01 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
С триггером кто - нибудь подскажет? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 13:03 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
emolenev SIMPLicity_, в таблице с полумиллиардом строк оперативно получить данные по id не получается :) Ойдаладна .... Кластерный индекс по Id и секционирование .... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 13:27 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
emolenev Триггер выдает ошибку Invalid object name 'INSERTED'. CREATE TRIGGER [dbo].[TB_INSERT] ON [dbo].[TB] AFTER INSERT as IF @@ROWCOUNT=0 return BEGIN DECLARE @table_name sysname SET @table_name=(SELECT Id FROM INSERTED) if OBJECT_ID(@table_name) IS NULL AND OBJECTPROPERTY(OBJECT_ID(@table_name), 'IsTable') <> 1 exec('CREATE TABLE [dbo].['+ @table_name +'] ([ID] [smallint] NOT NULL,[VALUE] [float] NULL) exec('INSERT INTO ['+ @table_name +'] SELECT * FROM INSERTED') END Не-не-не... Вот вторую команду так нельзя. Для неё таблицы INSERTED из триггера не существует... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 13:29 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
сначала - из insertrd во временную таблицу. А уже потом - из временной таблицы в нужную в динамическом запросе... Ну, в общем, там будут "грабли" подпёртые "костылями" ... Подумайте о секционировании по id . Либо делайте рабочую таблицу (короткую, например за месяц/неделю/день/час) и длинную - архивную. Но для анализа (особенно - для ретро-анализа) обычно скорость извлечения данных не критична. Поговорите с "бизнесом",- вероятно они захотели "всего и сразу" просто потому что им сказали что такое можно... У меня такое бывает,- и начинается словами: "Дим, ну ты же всё(!) можешь..." ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 13:36 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
SIMPLicity_ сначала - из insertrd во временную таблицу. А уже потом - из временной таблицы в нужную в динамическом запросе... Ну, в общем, там будут "грабли" подпёртые "костылями" ... Подумайте о секционировании по id . Либо делайте рабочую таблицу (короткую, например за месяц/неделю/день/час) и длинную - архивную. Но для анализа (особенно - для ретро-анализа) обычно скорость извлечения данных не критична. Поговорите с "бизнесом",- вероятно они захотели "всего и сразу" просто потому что им сказали что такое можно... У меня такое бывает,- и начинается словами: "Дим, ну ты же всё(!) можешь..." я уже не говорю, про возможность разных ID в рамках одной операции insert надо городить курсор В общем "картина маслом" Динамический DDL в курсоре в триггере. Прям полная котомка антипаттернов. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 13:43 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
emolenev SIMPLicity_, в таблице с полумиллиардом строк оперативно получить данные по id не получается :) данунах, не может быть, как вы пробовали "оперативно" получить и что не получилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 13:44 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
emolenev, а если данной таблицы не существует будет ее создавать и записывать Это Вы ошиблись выбором инструментария, в SQL схемы данных планируют заранее. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 13:46 |
|
Триггер помогите написать.
|
|||
---|---|---|---|
#18+
emolenev, уж поверьте база с табличкой в полмиллиарда строк, лучше базы с полумиллиардом таблиц. у вас банальные какие нибудь клиентские библиотеки (типа EF, или RPC - с линкованных серверов) которые при преобразовании запросов вычитывают метаданные будут просто в ауте. интересно зачем я это пишу? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 13:51 |
|
|
start [/forum/topic.php?fid=46&fpage=33&tid=1685056]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 301ms |
total: | 455ms |
0 / 0 |