我目前正在處理我的小數據庫項目,但我已遇到問題。我有兩個表,其中生成的腳本張貼在下面,現在我試圖寫一個過程,將首先添加一個記錄到較小的一個,旁邊的第二個使用它的ID從第一個。但是我收到一個錯誤: 「列名或提供的值數量與表定義不匹配。」 嘗試將默認值添加到表格Klienci。 我不知道發生了什麼,因爲沒有列或參數,所以應該沒有問題,至少像這樣。錯誤:提供的值的列名或數量與表定義不匹配
第一個表:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[KlienciIndywidualni](
[IDKlientaIndywidualnego] [int] IDENTITY(1,1) NOT NULL,
[IDKlienta] [int] NOT NULL,
[Imie] [nvarchar](50) NOT NULL,
[Nazwisko] [nvarchar](50) NOT NULL,
[NumerLegitymacji] [int] NULL,
[Adres] [nvarchar](50) NOT NULL,
[Miasto] [nvarchar](50) NOT NULL,
[KodPocztowy] [nvarchar](50) NOT NULL,
[Kraj] [nvarchar](50) NOT NULL,
[Telefon] [int] NOT NULL,
[Email] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_KlienciIndywidualni] PRIMARY KEY CLUSTERED
(
[IDKlientaIndywidualnego] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[KlienciIndywidualni] WITH CHECK ADD CONSTRAINT [FK_KlienciIndywidualni_Klienci] FOREIGN KEY([IDKlienta])
REFERENCES [dbo].[Klienci] ([IDKlienta])
GO
ALTER TABLE [dbo].[KlienciIndywidualni] CHECK CONSTRAINT [FK_KlienciIndywidualni_Klienci]
GO
ALTER TABLE [dbo].[KlienciIndywidualni] WITH CHECK ADD CONSTRAINT [CK_KlienciIndywidualni] CHECK ((len([Telefon])>=(9)))
GO
ALTER TABLE [dbo].[KlienciIndywidualni] CHECK CONSTRAINT [CK_KlienciIndywidualni]
GO
ALTER TABLE [dbo].[KlienciIndywidualni] WITH CHECK ADD CONSTRAINT [CK_KlienciIndywidualni_mail] CHECK (([Email] like '%@%.[a-z][a-z][a-z]'))
GO
ALTER TABLE [dbo].[KlienciIndywidualni] CHECK CONSTRAINT [CK_KlienciIndywidualni_mail]
GO
第二個:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Klienci](
[IDKlienta] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_Klienci] PRIMARY KEY CLUSTERED
(
[IDKlienta] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
步驟:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE dodaj_klienta_indywidualnego
-- parametry
@Imie nvarchar(50),
@Nazwisko nvarchar(50),
@Adres nvarchar(50),
@KodPocztowy nvarchar(50),
@Miasto nvarchar(50) ,
@Kraj nvarchar(50),
@Telefon int,
@Email nvarchar(50),
@NumerLegitymacji nvarchar(50) = null
AS
BEGIN
SET NOCOUNT ON;
declare @IDKlienta as int;
begin try
begin tran
--dodaj klienta
INSERT INTO Klienci
DEFAULT VALUES
set @IDKlienta = @@IDENTITY;
--dodaj klienta indywidualnego
INSERT INTO KlienciIndywidualni
VALUES(@IDKlienta, @Imie, @Nazwisko, @Adres, @Miasto,
@KodPocztowy, @Kraj, @Telefon, @Email);
COMMIT TRAN
end try
begin catch
declare @error as varchar(127)
set @error = (Select ERROR_MESSAGE())
RAISERROR('Nie mozna dodac osoby-klienta, blad danych. %s', 16, 1, @error);
ROLLBACK TRAN
end catch
END
GO
錯誤是'INSERT INTO KlienciIndywidualni'不是你認爲的線。你錯過了'NumerLegitymacji'。爲其添加參數 - 或者如果您不想在該列中插入任何內容,請使用排除該列的顯式列列表。 –
爲什麼只有一個表格只有一個標識字段?我錯過了什麼嗎? – thursdaysgeek