我想知道在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)
...
我知道有很多方法可以将一个值添加到不同的列中,但是我想知道这是否可能。
答案 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.ColumnA
为inserted.ColumnB
,则INSTEAD OF触发器可以更改插入,将inserted.ColumnB
添加为NULL
的值。
将VALUES添加到UPDATE
后,可以运行ColumnA
查询,如果ColumnA
(假设{{1}列中允许}或为假值(例如,如果ColumnB
是ColumnB IS NULL
,并且这些值始终为正,请在您的{{1 }},然后输入NULL
这些是我能想到的最简单的方法
答案 2 :(得分:0)
不,尤其是因为SQL不是OOP语言,因此您无法使用保留字“ this”访问不存在的对象。