代码之家  ›  专栏  ›  技术社区  ›  Prince Jkc

您如何连接其他表中的数据或我的第五个表中用户输入的数据?

  •  0
  • Prince Jkc  · 技术社区  · 7 年前
    • 将其他表格或用户输入的数据放在第五个表格中

    • 用于在其上插入数据的存储过程

    我在windows窗体中连接了它。

    桌子 supplier

    CREATE TABLE SUPPLIER
    (
        SUPPLIERID int identity(001,1) PRIMARY KEY NOT NULL,
        SUPPLIERNAME varchar(50) NOT NULL,
        ADDRESS varchar(50) NOT NULL,   
        Contact# varchar(50) NOT NULL
    )
    

    桌子 products :

    CREATE TABLE PRODUCTS
    (
        PRODUCTID int identity(301, 1) PRIMARY KEY NOT NULL,
        PNAME varchar(50) NOT NULL,
        PCOLOR varchar(50) 
             FOREIGN KEY REFERENCES PRODUCTCOLOR(PRODUCTCOLOR) NOT NULL,
        PPRICE INT NOT NULL
    )
    

    桌子 productcolor :

    CREATE TABLE PRODUCTCOLOR
    (   
        PRODUCTCOLOR varchar(50) PRIMARY KEY NOT NULL
    )
    

    桌子 customer :

    CREATE TABLE CUSTOMER
    (       
        CUSTOMERID int identity(601,1) PRIMARY KEY NOT NULL,    
        FIRSTNAME varchar(50) NOT NULL,     
        LASTNAME varchar(50) NOT NULL,                      
        EMAIL varchar(50) NOT NULL ,        
        ADDRESS varchar(50) NOT NULL,       
        TELEPHONE varchar(50) NOT NULL,
        username varchar(50),
        password varchar (50)
    )
    

    我想把它们放在第5个表中,并用它创建一个存储过程

    桌子 orders :

    CREATE TABLE ORDERS
    (
        Cusid int NOT NULL foreign key references CUSTOMER(CUSTOMERID),
        Proid int NOT NULL foreign key references PRODUCTS(PRODUCTID),
        Supp int NOT NULL foreign key references SUPPLIER(SUPPLIERID),
        FNAME VARCHAR(50),
        LNAME VARCHAR(50),
        PRONAME VARCHAR(50),
        SUPNAME VARCHAR(50),
        PCOLOR  varchar(50)FOREIGN KEY REFERENCES PRODUCTCOLOR(PRODUCTCOLOR)NOT NULL,
        QUANTITY VARCHAR(50)primary key NOT NULL
    )
    

    存储过程:

    CREATE PROCEDURE sp_order
        @FNAME varchar(50),         
        @LNAME varchar(50),                     
        @PRONAME varchar(50),       
        @SUPNAME varchar(50),       
        @PCOLOR varchar(50),
        @QUANTITY int
    AS
        INSERT INTO ORDERS 
        VALUES (@FNAME, @LNAME, @PRONAME, @SUPNAME, @PCOLOR, @QUANTITY)
    
        RETURN 0
    

    我不知道我的第五个表和存储过程是否正确。

    我试过很多东西,但有点困惑

    1 回复  |  直到 7 年前
        1
  •  1
  •   Crowcoder    7 年前

    如果未插入表的所有列,则INSERT语句必须列出特定列:

    INSERT INTO ORDERS (FNAME, LNAME, PRONAME, SUPNAME, PCOLOR, QUANTITY)
    VALUES(@FNAME,@LNAME,@PRONAME , @SUPNAME, @PCOLOR, @QUANTITY);
    

    注意列名是如何指定的 还有 提供了值。

    然而 ,您的表已定义 NOT NULL 列,因此必须为这些列提供值。

    您的程序应该更像这样:

    CREATE PROCEDURE sp_order
    @Cusid int,
    @Proid int,
    @Supp int,
    @FNAME varchar(50),         
    @LNAME varchar(50),                     
    @PRONAME varchar(50),       
    @SUPNAME varchar(50),       
    @PCOLOR varchar(50),
    @QUANTITY int
    AS
    
        INSERT INTO ORDERS (Cusid, Proid, Supp, FNAME, LNAME, PRONAME, SUPNAME, PCOLOR, QUANTITY)
        VALUES(@Cusid, @Proid, @Supp, @FNAME,@LNAME,@PRONAME , @SUPNAME, @PCOLOR, @QUANTITY);
    
    RETURN 0;
    

    现在您遇到了获取这些外键值的问题。根据你提供的信息,我没法帮你。

    作为旁白 您不应该将过程命名为“sp\u0”,因为这是一个特殊的前缀,它会给您带来很小的性能损失。