에서 열 이름저장 프로 시저 업데이트 다른 테이블
create table Customers
(CustomerId int not null
,StoreId int
,primary key(CustomerId)
)
go
create table Stores
(StoreId int
,StoreName varchar(50)
,primary key(StoreId)
)
go
alter table Customers
add foreign key (StoreId)
references Stores(StoreId)
go
insert into Stores
values (1,'Biggest Store')
,(2,'Mediumest Store')
,(3,'Smaller Store')
,(4,'Smallest Store')
go
insert into Customers
values
(1,1)
,(2,1)
,(3,2)
,(4,3)
,(5,4)
이의 내가라는 저장 업데이트를 사용하고자한다고 가정 해 봅시다 예는이 작은 스크립트를 고려 두 개의 매개 변수를 취 spUpdateCustomerInformation
: 하나는이다 CustomerId
이고 다른 하나는 사용자가 업데이트하고자하는 상점의 이름입니다 (상점 테이블의 StoreName). 따라서 Customers
테이블의 레코드 (1,1)
은 고객 1이 Biggest Store
에서 무언가를 샀다는 것을 의미합니다. spUpdateCustomerInformation 1,'Smallest Store'
과 같은 저장 프로 시저에 두 개의 매개 변수를 전달하고 저장 프로 시저를 실행 한 후에 (1,1)
인 레코드가 (1,4)
인 레코드를 실행 한 후 내 시도
create proc spUpdateCustomerInformation
@CustomerId int
,@StoreName varchar(50)
as begin
update c
set c.StoreId = s.StoreId
from customers as c
inner join Stores as s
on s.StoreId = c.StoreId
where c.CustomerID = @CustomerId
and s.StoreName = @StoreName --failing here
end
0 행이 업데이트됩니다. StoreId를 저장 프로 시저의 두 번째 매개 변수로 단순히 전달할 수 있다는 것을 알고 있지만 두 번째 매개 변수로 StoreName
을 전달하는 것이 현명한 방법인지 궁금합니다. 이것은 고작 시나리오가 아니며 CustomerId
을 매개 변수로 전달해야합니다.
이것은 내 분을 넘지 않았습니다. – wootscootinboogie