SQL-插入时,在ColumnB

时间:2019-08-30 17:10:51

标签: sql sql-server tsql

我想知道在SQL(特别是SQL Server)中插入多列记录以引用ColumnB相对于该记录的ColumnA值时是否可能。

就伪代码而言,这是我所设想的一个简单示例:

INSERT INTO TableName (ColumnA, ColumnB) VALUES 
(Value1, this.ColumnA), -- (e.g. 1, 1)
(Value2, this.ColumnA), -- (e.g. 5, 5)
(Value3, this.ColumnA), -- (e.g. 10, 10)
...

我知道有很多方法可以将一个值添加到不同的列中,但是我想知道这是否可能。

3 个答案:

答案 0 :(得分:1)

您可能只是提供了一个过于简单的示例,但为什么不这样做呢?:

INSERT INTO TableName (ColumnA, ColumnB) VALUES 
(Value1, Value1), -- (e.g. 1, 1)
(Value2, Value2), -- (e.g. 5, 5)
(Value3, Value3), -- (e.g. 10, 10)
...

最重要的是,您的示例可能只是过于简化,但是如果它们的值相同,那么为什么只需要一个这样的列就为什么需要2个单独的列:

INSERT INTO TableName (ColumnA) VALUES ('Value1'), ('Value2'), ('Value3')

答案 1 :(得分:1)

没有很多方法可以模拟这一点,而且都不是简单明了的。

目标表上的INSERT触发器。如果inserted.ColumnAinserted.ColumnB,则INSTEAD OF触发器可以更改插入,将inserted.ColumnB添加为NULL的值。

将VALUES添加到UPDATE后,可以运行ColumnA查询,如果ColumnA(假设{{1}列中允许}或为假值(例如,如果ColumnBColumnB IS NULL,并且这些值始终为正,请在您的{{1 }},然后输入NULL

这些是我能想到的最简单的方法

答案 2 :(得分:0)

不,尤其是因为SQL不是OOP语言,因此您无法使用保留字“ this”访问不存在的对象。