marc.snoeys (5/17/2013)
That's basically my point 🙂There is nothing wrong with the INSERT-statement at all.
But, my personal opinion is that it would be more intuitive to be able to write an INSERT-statement just like an UPDATE-statement.
But that's merely a discussion on improvement/addition of syntax.
There is nothing preventing you from doing something like this:
insert mytable(col1,col2,col3,col4)
select
col1 = myothertable.col3
, col2 = getdate()
, col3 = newid()
, col4 = 'foo'
from myothertable
where foo='bar';
If you find that more readable, you can handle it like that, but this doesn't guarantee that what you alias as col2 actually ends up in col2 - that relies on your good skills.
Personally, if I have a large number of columns in an insert, I like to put the column name in a comment in the select:
insert mytable(col1,col2,col3,col4)
select
myothertable.col3 -- col1
, getdate() -- col2
, newid() -- col3
, 'foo' -- col4
from myothertable
where foo='bar';
MM
select geometry::STGeomFromWKB(0x0106000000020000000103000000010000000B0000001000000000000840000000000000003DD8CCCCCCCCCC0840000000000000003DD8CCCCCCCCCC08408014AE47E17AFC3F040000000000104000CDCCCCCCCCEC3F9C999999999913408014AE47E17AFC3F9C99999999991340000000000000003D0000000000001440000000000000003D000000000000144000000000000000400400000000001040000000000000F03F100000000000084000000000000000401000000000000840000000000000003D0103000000010000000B000000000000000000143D000000000000003D009E99999999B93F000000000000003D009E99999999B93F8014AE47E17AFC3F400000000000F03F00CDCCCCCCCCEC3FA06666666666FE3F8014AE47E17AFC3FA06666666666FE3F000000000000003D1800000000000040000000000000003D18000000000000400000000000000040400000000000F03F000000000000F03F000000000000143D0000000000000040000000000000143D000000000000003D, 0);