powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Калькулируемое поле.
3 сообщений из 3, страница 1 из 1
Калькулируемое поле.
    #32002547
Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли возможность изменить обычное поле на калькулируемое, т.е.
Есть таблица:
Create table MyTable1 (
Price money,
Quantity money,
Amount money,
PaymentDate datetime )

А надо:
Create table MyTable1 (
Price money,
Quantity money,
Amount as (Price * Quantity) money,
PaymentDate datetime )

Проблема в следующем:
1. В таблице уже есть данные.
2. Много связей.
3. Поле должно остаться на своем месте.

В идеале выполнить такое предложение: Alter table MyTable1 alter column Amount as (Price * Quantity).

Еще хотелось бы узнать есть ли готовые инструменты для изменения порядкового номера колонки в таблице?
...
Рейтинг: 0 / 0
Калькулируемое поле.
    #32002638
Константин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Желание иметь в таблице калькулируемое поле противоречит требованию к нормализации таблиц. Ни одно не ключевое поле не должно функционально зависить от других неключевых полей. Таких полей в эффективно работающей базе быть не должно. Если уж действительно надо иметь такое поле, используйте представление (view) по таблице без этого поля.
Существующее поле можно оставить, а потом использовать для чего-либо полезного, которое может появится в будущем.
Если это поле сильно увеличивает базу, то единственный путь -

Create table _MyTable1 (
Price money,
Quantity money,
PaymentDate datetime )

insert into _MyTable1 (Price,Quantity,PaymentDate)
select Price,Quantity,PaymentDate from MyTable1

Потом MyTable1 уничтожить, а _MyTable1 переименовать в MyTable1
...
Рейтинг: 0 / 0
Калькулируемое поле.
    #32002648
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В жизни бывает всякое и иногда для практ.целей БД, наоборот, приходится денормализовывать. Типич.пример - OLAP-приложения. Выч.поля - вещь полезная, более того, в 2000-м по ним можно еще и индексы создавать. Изменить поле на вычисляемое при помощи ALTER COLUMN, очевидно, не удастся, т.к. в нем уже есть данные и что делать, если они противоречат формуле? Поэт. проходит т. ADD COLUMN. Вообще говоря, в терминах SQL порядок полей никак не определяется и не задается. Придется создать новую таблицу и переписать данные из старой. Даже если представить себе, что существовала бы гипот.команда ALTER TABLE, меняющая физ.порядок следования полей в табл., проку от нее было бы очень мало, т.к. по времени это все равно созд-е новой стр-ры и перекачка в нее данных из старой.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Калькулируемое поле.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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