更新c#中三个表的列名

本文关键字:三个 更新 | 更新日期: 2023-09-27 18:14:17

我有3个表,主类别,子类别和产品。我想更新主要类别,但到那时,它应该更新其他剩余表中的尊重数据。以下是我的表格。

1. mainCategory 
mainCatId 
mainCatName
    2. subCategory 
subCatId 
mainCatId 
mainCatName 
subCatName
    3. products 
productId 
subCatId 
subCatName 
productName

更新必须是这样的,当我改变mainCatName时,它会自动改变mainCatId,所以它应该改变mainCaId和mainCatName,subCatId和subCatName在其他表中,我也尝试过查询,但它不起作用查询的方法是:

UPDATE    mainCategory
SET       mainCatId =, mainCatName =
FROM      mainCategory 
INNER JOIN
          subCategory ON mainCategory.mainCatId = subCategory.mainCatId 
CROSS JOIN
          products

,请帮助我!

更新c#中三个表的列名

你需要用外键链接你的表,并在表定义中应用ON UPDATE CASCADE

您不需要在subCategory表中有mainCatName,因为subCategory表应该与一个带有mainCategory表的外键链接。

与产品表中的子catgoryname相同。

CREATE TABLE mainCategory (
    [mainCatId]   INT        NOT NULL,
    [mainCatName] NCHAR (10) NULL,
    PRIMARY KEY CLUSTERED ([mainCatId] ASC));
CREATE TABLE subCategory (
    [subCatId]   INT        NOT NULL,
    [mainCatId]  INT        NULL,
    [subCatName] NCHAR (10) NULL,
    PRIMARY KEY CLUSTERED ([subCatId] ASC),
    CONSTRAINT [FK_Table_ToTableMainCat] FOREIGN KEY ([mainCatId]) 
    REFERENCES [mainCategory] ([mainCatId]) ON UPDATE CASCADE);
CREATE TABLE products (
    [productId] INT NOT NULL PRIMARY KEY, 
    [subCatId] INT NULL, 
    [productName] NCHAR(10) NULL, 
    CONSTRAINT [FK_products_ToTableSubCategory] FOREIGN KEY (subCatId) 
    REFERENCES subCategory(subCatId) ON UPDATE CASCADE);

你可以更新mainCatName:

 UPDATE mainCategory SET mainCatName='NEW NAME' WHERE mainCatId=SOMEID;

子类别表通过外键与主类别表链接。您的产品表与带有外键的子类别表相链接。

如果您想获得特定mainCategory的产品:

SELECT productName, subCatName, mainCatName FROM products
JOIN subCategory ON products.subCatID = subCategory.subCatID
JOIN mainCategory ON subCategory.mainCatID = mainCategory.mainCatID
where mainCategory.mainCatID = 1;

如果您想获得特定子类别的产品:

SELECT productName, subCatName FROM products
JOIN subCategory ON products.subCatID = subCategory.subCatID
where subCategory.subCatID = 1;

如果要删除特定子类别中的产品,只需删除子类别记录,相应的产品将被级联删除。

如果要更改子类别的名称,只需更改子类别表中的记录。