I'm setting up a view (foo), in place of a table with the same name. The new view will use 3 sub-tables (A, B, C) instead of the original table. I'm using instead-of triggers to accomplish this.
CREATE VIEW [dbo].[foo]
AS
select
b2 as oldkey,
b3 as boat,
c2 as state,
a2 as name
from
A
join B on a1 = b1
join C on a1 = c1
foo columns: oldkey (identity) | boat | state | name
My issue is that I have a large code base that is written to insert into foo as follows:
insert into foo
values
('fishing boat', 'California', 'Skipper')
But this code is not currently working because the instead-of-insert/view expect the key value to be provided as well. The key value is the identity on table B, so I don't need it to be inserted.
Error: "Column name or number of supplied values does not match table definition."
What changes do I need to make to allow the code base of inserts that already exist to continue functioning?
INSTEAD OF INSERT
trigger, you need to insert into the first table, get the newly defined identity column value, and then fill the other tables including that foreign key. You should show us your trigger code! – marc_s