在插入查询上组合(连接)两列到第三列(PK),sql server 2014

时间:2015-07-09 16:38:45

标签: sql-server

我正在使用sql server 2014 for windows form application,我有这样的列

id | AccountNo |位置

栏目详情:

id ---> int,not null,auto increment

AccountNo ---> varchar(50),not null,主键

位置---> varchar(50),not null

我想运行sql INSERT查询来输入用户输入,以便它就像这样

| id | AccountNo |位置|

| 10000 | PK10000 | PK |

我在想这个问题

string strCommand =" INSERT INTO Customer(ID,AccountNo,Location)值(@ ID,CONCAT(@ Location,@ ID [,@ AccountNo]),@ Location)&#34 ;;

或者是否可以创建一个触发器,如果​​不可能这样,就会在插入时组合两列,因为AccountNo是PK

建议请..

1 个答案:

答案 0 :(得分:2)

你真的不应该像这样连接主键值。例如,您可以获得重复值。最好将IDENTITY列创建为主键。如果您确实需要额外的列用于显示目的,则添加计算列。例如:

CREATE TABLE MyTable
(
    ID INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,
    Location VARCHAR(20) NOT NULL,
    AccountNo AS CAST(ID AS VARCHAR) + Location
)

现在你只需要像这样插入:

INSERT INTO MyTable (Location) VALUES ('PK')

这将为您提供包含以下值的行:

ID  Location AccountNo
1   PK       1PK

您还可以在计算列上创建约束,以强制AccountNo的唯一值:

ALTER TABLE MyTable
    ADD CONSTRAINT UX_MyTable_AccountNo UNIQUE (AccountNo)