Дизайн таблицы в SQL Server - PullRequest
0 голосов
/ 15 марта 2019

У меня есть требование, которое требует оформления таблицы, где необходимо поддерживать файлы, загруженные для любых приложений. Есть ли простой способ, которым я могу достичь этого без любого триггера / Sproc?

ID        AppName FileName    fileorder 
1          abc    file1        1
2          abc    file2        2
3          abc    file1        3
4          xyz    test1        1    - start a fresh 
5          xyz    test2        2
6          abc    file3        4    - resume from previous value of 'abc' 
7          xyz    test3        3    - resume from previous value of 'xyz'
8          grt    file1        1    - start a fresh

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Вместо записи значения порядка файлов в таблицу лучше написать запрос, чтобы прочитать таблицу, которая выглядит следующим образом:

SELECT ID, AppName, FileName, ROW_NUMBER() OVER(PARTITION BY AppName ORDER BY ID) AS fileorder
FROM YOUR_TABLE                      -- Whatever your table name is
WHERE AppName in ('abc','xyz','grt') -- Any relevant WHERE clause
ORDER BY ID;

К сожалению, вы не можете использовать оконные функции в вычисляемом столбце, что будет единственным выходом из хранимой процедуры или триггера для этого.

0 голосов
/ 15 марта 2019

Нет, вы ничего не можете написать в CREATE TABLE, которая автоматически заполнит столбец fileorder таким образом. Единственный способ, которым вы можете сделать это, с помощью некоторого пользовательского кода.

Я не знаю, почему вы хотите создать такой столбец в вашей таблице, но по большинству причин, о которых я могу подумать, вам, вероятно, лучше вообще не хранить это значение в вашей таблице и не рассчитывать его во время запроса или создания ПРОСМОТРА, который включает вычисление этого столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...