我想在现有表格中添加另一行,如果我做正确的事情,我有点犹豫,因为它可能会扭曲数据库。我在下面有我的剧本,想听听你的想法。
我想为' Jane'添加另一行。在桌子上,这将是“滑行"在ACT专栏中。
表:[Emp_table].[ACT].[LIST_EMP]
我的脚本是:
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')
这会起作用吗?
答案 0 :(得分:1)
你的陈述看起来不错。如果数据库出现问题(例如,由于外键约束违规),它将拒绝该语句。
如果表格中的任何字段都是数字(而不是varchar
或char
),请删除相应字段周围的引号。例如,如果emp_cod
和line_no
为int
,请插入以下值:
('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变量替换为您要插入的值。
我希望这是有道理的。