Я всегда делал:
perl -wlne'eval;print$@if$@'
С 5,10, я переключился на:
perl -wnE'say eval()//$@'
Нет, вы не можете сделать это в представлении, вы можете создать временную таблицу для хранения всей этой информации и создать там ключ или уникальный идентификатор для каждой строки.
Я думаю, вы можете сделать это с помощью ROW_NUMBER (), по крайней мере, если вы можете гарантировать упорядочение представления. Например:
SELECT
ROW_NUMBER() OVER (ORDER BY col1, col2, col3) as UniqueId
FROM <lotsa joins>
Пока порядок остается неизменным, а в конце добавляются только поля, идентификатор будет уникальным.
Тот факт, что вы пытаетесь это сделать, указывает на гораздо более серьезные проблемы в дизайне базы данных и / или архитектуре приложения.
Поскольку у вас 10 таблиц, и я собираюсь предположить что разработчик (-ы) БД только что присвоил ID INT IDENTITY всем таблицам, в итоге у вас будет примерно (2 ^ 31) ^ 10 возможных строк в таблице.
Единственный тип данных, который я могу придумать. может покрыть это число, это преобразовать все целые числа в строки с нулевым заполнением и собрать их все вместе как большой СИМВОЛ.
Я предполагаю, однако, что ваша настоящая проблема заключается не в получении этого идентификатора для представления, а в некоторых то, что вы пытаетесь сделать, и это вопрос, который вы должны задать. Просто догадка.
Одна из возможностей - вызвать функцию из вашего представления, которая вычисляет хэш-код для всех столбцов идентификатора. Если вы используете приличный алгоритм криптографического хеширования, шансы коллизии мизерны (вероятно, более вероятно, что диск доставит неверные данные). Еще проще, конечно, вы могли бы просто объединить разные идентификаторы в один, гораздо больший идентификатор, возможно, в виде двоичного или varbinary столбца.
Сохранение этого идентификатора и возможность запрашивать его было бы немного сложнее. Я не могу придумать способ как вычислить его, так и сохранить из представления. Для ее создания вам, вероятно, понадобится хранимая процедура; детали во многом зависят от особенностей вашего приложения.