Why is negative id or zero considered a bad practice when inserting a primary key in a database table?个
我认为它在某些情况下可能是有用的,但人们说不推荐这样做,尽管他们从来不说/知道为什么.
所以,我想知道,根据定义,是否有一些限制,或者它是否应该没有任何问题,或者如果这只是一个惯例,如果确实有一些限制,为什么那个功能没有被阻止?
Why is negative id or zero considered a bad practice when inserting a primary key in a database table?个
我认为它在某些情况下可能是有用的,但人们说不推荐这样做,尽管他们从来不说/知道为什么.
所以,我想知道,根据定义,是否有一些限制,或者它是否应该没有任何问题,或者如果这只是一个惯例,如果确实有一些限制,为什么那个功能没有被阻止?
需要明确的是,这个问题和答案是关于对代理键使用负数,而不是对自然键使用负数.
据我所知,有三个理由认为这是一种糟糕的做法.
第一种观点有一定的正确性.您从未在上看到过SQL示例或答案,因此使用了负ID号.(从今天开始,我将改变这一点.)
第二个和第三个是第一个的必然结果,因为程序员经常假设没有意外的行为.(这让我想起了VBA可以让我将两个日期相乘,返回一个数字,我想,这个数字可以用平方日期表示.)
对于第二个问题,应用程序程序员可能会引入一些微妙的错误,因为他们没有为登录UI代码留出空间,这可能会使-123456看起来像123456.
第三个是编写返回id号的代码.返回单个id号的代码可能会返回-1作为错误代码.但是-1在大多数情况下是有效的ID号.(大多数数据库不会将id号限制在非负整数的范围内.)