-1

これらはテーブルとコーディングです。

create table student
(
s_id varchar(10) unique,
s_name varchar(50),
s_report varchar(50),
)

create table student_contact
(
stid int identity primary key,
stcellphone varchar(50) unique,
s_id varchar(10),
foreign key(s_id) references student(s_id)
)

create table test
(
t_id int identity primary key,
t_marks int,
)

create table st_test
(
stt_id int identity primary key,
s_id varchar(10),
t_id int,
foreign key(s_id) references student(s_id),
foreign key(t_id) references test(t_id)
)


alter view [join]
as
select s1.s_name,s2.stcellphone,s4.t_marks,s1.s_report
from
student as s1
inner join
student_contact as s2
ON s1.s_id=s2.s_id
inner join
st_test s3
ON s1.s_id=s3.s_id
inner join
test as s4
ON s4.t_id=s3.t_id

alter procedure marks
@st_id varchar(10)='',
@name varchar(50)='',
@mobile varchar(50)='',
@marks int=''
as
begin
    if(@marks < 3)
    begin
    insert into student values(@st_id,@name,'You are enrolled for 6 months')
    insert into test values(@marks)
    insert into student_contact values(@mobile,@st_id)
    select * from [join] where s_name =@name
    end
end

これは私が作成したコーディングです。データを挿入するプロシージャを作成しました。「st_test」テーブルに2つの列名(s_id、t_id)があり、これは学生とテストテーブルへの参照です。問題は私が作成したことです。これらのテーブルが結合され、このビューがすでにプロシージャで使用されているビュー問題は、プロシージャにあります。すべてのパラメータを入力すると、条件に従って挿入されたテーブルが表示されます。

4

1 に答える 1

2

あなたは使用を検討する必要がありますSCOPE_IDENTITY()

declare @id int
insert into test values(@marks)
SET @id = SCOPE_IDENTITY()
insert into st_test values(@st_id,@id)
insert into student_contact values(@mobile,@st_id)
select * from [join] where s_name =@name

また、最後のselectステートメントでs_nameの代わりに@idを使用することをお勧めします。これは、一意である必要があるためです。

于 2013-03-02T16:55:14.167 に答える