Создание столбца, который должен генерироваться автоматически путем объединения значений в других столбцах таблицы - PullRequest
2 голосов
/ 05 апреля 2011

Я получил таблицу в базе данных SQL с четырьмя столбцами: ID, Comp_Id, Cont_Id и Comp_Cont_Id.Значения в столбцы ID, Comp_Id, Cont_Id вводятся вручную, а значение в столбце Comp_Cont_Id должно генерироваться автоматически путем объединения значений в столбцах ID, Comp_Id, Cont_Id.

Например, если мы введем (201,301, 401) в (ID, Comp_Id, Cont_Id) соответственно, значение 201_301_401 должно быть автоматически сгенерировано в столбце Comp_Cont_Id таблицы.

Есть ли способ достичь этого?Если так, пожалуйста, скажите мне.

Ответы [ 2 ]

4 голосов
/ 05 апреля 2011

MS SQL поддерживает вычисляемые столбцы, синтаксис приведен в этом аналогичном вопросе .

DROP TABLE test99
CREATE TABLE test99 (
    id int,  
    comp_id int,  
    cont_id int,
    comp_cont_id AS cast(id AS varchar) + '_' + cast(comp_id AS varchar) + '_' + cast(cont_id AS varchar)
) 

INSERT INTO test99 (id, comp_id, cont_id)
VALUES (201, 301, 401)

SELECT * FROM test99
3 голосов
/ 05 апреля 2011

Используете ли вы PHP или ASP.NET для ввода значений? Если пользователь непосредственно вводит данные в таблицу, вы можете попробовать использовать триггер для установки последнего значения.

Однако Comp_Cont_Id - это то, что называется производным полем. Его значение зависит от других полей. Примерами производных полей являются общее количество записей, среднее значение цен и т. Д. Лучше создавать поле на лету, динамически, чем хранить его. Конечно, есть исключения, например, когда важна производительность.

...