如何使用某些前缀

时间:2015-06-13 18:01:51

标签: sql-server-2008

给定的查询是mysql格式。我想在SQL Server 2008中使用相同的查询。

CREATE TABLE table1_seq
(
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);

CREATE TABLE table1
(
  id VARCHAR(7) NOT NULL PRIMARY KEY DEFAULT '0', name VARCHAR(30)
);

现在是触发器

DELIMITER $$
CREATE TRIGGER tg_table1_insert
BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
  INSERT INTO table1_seq VALUES (NULL);
  SET NEW.id = CONCAT('LHPL', LPAD(LAST_INSERT_ID(), 3, '0'));
END$$
DELIMITER ;

然后你只需要向table1

插入行
INSERT INTO Table1 (name) 
VALUES ('Jhon'), ('Mark');

你还有

|      ID | NAME |
------------------
| LHPL001 | Jhon |
| LHPL002 | Mark |

1 个答案:

答案 0 :(得分:0)

这可以回答你的问题

-- create table with 'ABCD' as prefix, combining with identity column Id
CREATE TABLE dbo.Persons 
(
   Id int IDENTITY (1,1) NOT NULL
  ,PersonId AS ('ABCD' + CONVERT(varchar(20), Id)) PERSISTED NOT NULL PRIMARY KEY 
  ,Name varchar(100)
);
GO

-- Do not specify calculated column when insert values into the table
INSERT INTO dbo.Persons (Name)
VALUES ('Person1'), ('Person2'), ('Person3');
GO

-- Display the records from the table
SELECT PersonId, Name
FROM dbo.Persons;
GO

这种方法不需要创建单独的表和触发器,因此效率很高。

希望这有帮助。