更新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
,请帮助我!
你需要用外键链接你的表,并在表定义中应用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;
如果要删除特定子类别中的产品,只需删除子类别记录,相应的产品将被级联删除。
如果要更改子类别的名称,只需更改子类别表中的记录。