如果具有相同日期的记录已经过多,sql server能否决定客户端是否可以写入记录?
甚至不知道如何搜索类似的内容,但例如:如果具有相同日期的记录已经过多,sql server能否决定客户端是否可以写入记录?,sql,sql-server,entity-framework,Sql,Sql Server,Entity Framework,甚至不知道如何搜索类似的内容,但例如: First Table: Id, Date, Maximum records Second Table: Id, Date, more properties 是否可以在服务器端定义一些规则,如果第二个表中有太多相同日期的记录,并且超过了第一个表中当前日期的最大记录值,那么服务器将抛出错误或某种异常,从而阻止对该日期进行sql insert查询 可能的: First Table: 1,Date1,2 Second Table:(Maximum 2 on D
First Table:
Id, Date, Maximum records
Second Table:
Id, Date, more properties
是否可以在服务器端定义一些规则,如果第二个表中有太多相同日期的记录,并且超过了第一个表中当前日期的最大记录值,那么服务器将抛出错误或某种异常,从而阻止对该日期进行sql insert查询
可能的:
First Table:
1,Date1,2
Second Table:(Maximum 2 on Date 1)
1,Date3,...
2,Date1,...
3,Date1,...
不可能:
First Table:
1,Date1,2
Second Table:(Maximum 2 on Date 1)
1,Date3,...
2,Date1,...
3,Date1,...
4,Date1,...
如果无法做到这一点,那么在使用实体框架的windows窗体应用程序上实现此类检查的最佳方法是什么?简短的回答是肯定的
您需要编写一个(作为insert、delete和update语句执行的一部分执行的一种特殊类型的存储过程)来强制执行约束,因为它们不能在关系模式中表达。缺点是,与某些SQL实现不同,SQL Server触发器在insert、delete或update语句的所有工作完成后触发:如果触发器验证失败,事务将回滚,这意味着可能需要撤消大量工作。您可以使用
触发器来拒绝插入。有一个可能的MySQL解决方案。类似的东西可能适用于SQL Server这似乎是数据库设计的一个奇怪要求。你在做什么导致你有这个要求?@ScottChamberlain我一次会有很多正在运行的应用程序,它们会检查当前的数据库表。如果来自许多应用程序的人希望在最后一个剩余位置(特定日期)插入记录,我希望服务器验证,而不是客户端应用程序验证,因为可能会出现超时等情况。@M.J.这是一个很容易解决的常见问题,根本不需要使用单独的表。所有这些都可以通过服务器上的事务和存储过程来完成。不要陷入“我建议问一个新问题”的困境,并解释您正在尝试做什么以及您面临的挑战(如让服务器而不是客户端进行验证),然后问“我如何解决此问题?”而不是“我如何实现此解决方案(针对我没有告诉您的问题)?”@ScottChamberlain好的,谢谢你的解释,我可能会提出这个问题,而不是这个问题