在现有表中添加行(SQL Server 2005)

时间:2016-08-12 13:28:17

标签: sql-server-2005 row

我想在现有表格中添加另一行,如果我做正确的事情,我有点犹豫,因为它可能会扭曲数据库。我在下面有我的剧本,想听听你的想法。

我想为' Jane'添加另一行。在桌子上,这将是“滑行"在ACT专栏中。

表:[Emp_table].[ACT].[LIST_EMP]

enter image description here

我的脚本是:

INSERT INTO [Emp_table].[ACT].[LIST_EMP]
([ENTITY],[TYPE],[EMP_COD],[DATE],[LINE_NO],[ACT],[NAME])
VALUES
('REG','EMP','45233','2016-06-20 00:00:00:00','2','SKATING','JANE')

这会起作用吗?

2 个答案:

答案 0 :(得分:1)

你的陈述看起来不错。如果数据库出现问题(例如,由于外键约束违规),它将拒绝该语句。

如果表格中的任何字段都是数字(而不是varcharchar),请删除相应字段周围的引号。例如,如果emp_codline_noint,请插入以下值:

('REG','EMP',45233,'2016-06-20 00:00:00:00',2,'SKATING','JANE')

答案 1 :(得分:0)

将记录插入数据库一直是我失去了很多头发的最常见原因!

当涉及到SELECT甚至UPDATE时,SQL是很棒的,但是当涉及到INSERT时,就像来自另一个星球的人进入了SQL标准委员会,并设法将其实现到最终的SQL标准中实现!

如果您的表没有自动生成的自动主键,则必须自行编码以管理避免重复。

首先编写一个普通的SELECT,看看你要添加的记录是否已经存在。但正如罗伯特暗示的那样,你的表可能没有主键,因为它看起来像是一张LOG表。插入! 如果它确实需要每次都有一个唯一的记录,那么我强烈建议您为该表创建一个主键,可以是自动生成的一个或现有列的组合。

假设前五个组合列创建一个唯一键,此选择将​​确定您插入的数据是否已存在...

SELECT COUNT(*) AS FoundRec FROM [Emp_table].[ACT].[LIST_EMP]
WHERE [ENTITY] = wsEntity AND [TYPE] = wsType AND [EMP_COD] = wsEmpCod AND [DATE] = wsDate AND [LINE_NO] = wsLineno

wsXXX声明,您必须使用直接值替换它们,或者在脚本的前面使用DECLAREd。

如果单独运行并收到1或更大的值,则表中已存在数据,至少包含5个第一列。真正的重复测试将要求您测试表中的每一列,但它应该给您一个想法。

在INSERT中,要将所有内容作为一个语句执行,您可以执行此操作...

INSERT INTO [Emp_table].[ACT].[LIST_EMP]
([ENTITY],[TYPE],[EMP_COD],[DATE],[LINE_NO],[ACT],[NAME])
VALUES
('REG','EMP','45233','2016-06-20 00:00:00:00','2','SKATING','JANE')
WHERE (SELECT COUNT(*) AS FoundRec FROM [Emp_table].[ACT].[LIST_EMP]
       WHERE [ENTITY] = wsEntity AND [TYPE] = wsType AND 
             [EMP_COD] = wsEmpCod AND [DATE] = wsDate AND 
             [LINE_NO] = wsLineno) = 0

只需将wsXXX变量替换为您要插入的值。

我希望这是有道理的。