【发布时间】:2014-05-11 06:46:05
【问题描述】:
您好,我正在为Countires、States、Cities 开发一个带有HTML 下拉菜单的简单表单。添加国家,州,城市并更新它们已经完成,没有问题。每件事都完美无缺。问题是在删除时出现的(假设是停用)。
我通过引用网络中的一些网站,设计了适合此类国家、州、城市下拉列表的表格。喜欢:
Countries Table:
|SerialNo|CountryName|CountryId|Active|
States Table
|SerialNo|StateName|StateId|CountryId|Active|
CitiesTable:
|SerialNo|CityName|CityId|StateId|IsActive|
所以在停用任何国家时,我将 Active="false",因此停用的国家不会显示在我的网格中。如果这样做的话,各个国家/地区的州也应该成为停用权。
所以我这样做了: SQL查询:
Update CountriesTable set Active='false' where CountryId= @CountryId
Update StatesTable set Active='false' where CountryId= @CountryId
因为我在两个表中都有 CountryId,所以我可以在两个表中停用国家、州。但是我如何才能停用停用状态的城市? Sql中有一个叫做Triggers的概念,它在对特定表进行数据操作后更新其他表,我可以用Triggers实现我的要求,还是有什么好的方法来实现它?
我怎样才能实现它?
我不想在城市表中再添加一列 CountryId 对不起,我的英语不好。希望我对你们所有人都清楚!任何参考,任何 Sql 查询,任何帮助都非常感谢!!!
【问题讨论】:
-
请注意,并非所有国家/地区都有州(或者,至少,国家和城市之间的领土划分并不总是称为州)。您应该指出您正在使用哪个 DBMS(尽管我有把握它是 MS SQL Server;哪个版本可能很重要,特别是如果它是过时的)。是的,如果您希望将一个国家/地区的状态更新传播到各州和城市,您将使用触发器。但是,您的触发器也需要适应设置
IsActive = 'true';如果你这样做,你不会希望触发器将事情设置为 false。 -
此外,您还需要包含实体的任何 ISO 信息(如果存在) - 即 the country codes。州(国家/地区)和城市可能有相同的信息。
标签: sql