创建一个应该通过连接表中其他列中的值自动生成的列

时间:2011-04-05 06:55:51

标签: sql database-design concatenation autogeneratecolumn

我在SQL数据库中有一个包含四列的表:ID,Comp_Id,Cont_Id和Comp_Cont_Id。手动输入ID,Comp_Id,Cont_Id列中的值,并通过连接ID,Comp_Id,Cont_Id列中的值自动生成Comp_Cont_Id列中的值。

例如,如果我们分别输入(201,301,401)(ID,Comp_Id,Cont_Id),则应在表格的Comp_Cont_Id列中自动生成值201_301_401。

有没有办法实现它?如果是这样,请告诉我。

2 个答案:

答案 0 :(得分:4)

MS SQL支持计算列,语法在此similar question中给出。

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

答案 1 :(得分:3)

您使用PHP或ASP.NET输入值吗?如果用户直接键入表格,您可以尝试使用触发器设置最后一个值。

但是,Comp_Cont_Id是所谓的派生字段。它的价值取决于其他领域。派生字段的示例是记录的总数,价格的平均值等。最好动态地动态地提出字段,而不是存储它。当然,也有例外,比如表现很重要。