所以我正在为我工作的公司制作一个相当小的脚本,以帮助我们更好地管理我们的服务器。我不经常使用MySQL,所以我对最佳路径感到困惑。
我正在做这样的事......
$sql = "CREATE TABLE IF NOT EXISTS Servers
(
MachineID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(MachineID),
FirstName varchar(32),
LastName varchar(32),
Datacenter TINYINT(1),
OperatingSystem TINYINT(1),
HostType TINYINT(1)
)";
$result = mysql_query($sql,$conn);
check ($result);
$sql = "CREATE TABLE IF NOT EXISTS Datacenter
(
DatacenterID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(DatacenterID),
Name varchar(32),
Location varchar(32)
)";
$result = mysql_query($sql,$conn);
check ($result);
基本上在Servers表中,我将把条目的索引存储在另一个表中。我担心的是,如果我们删除其中一个条目,它将搞砸自动递增的索引,并可能导致大量不正确的数据。
为了更好地解释,假设我添加的第一台服务器,Datacenter值为3(DatacenterID),我们稍后会删除id 1(DatacenterID)Datacenter。
有没有好办法呢?
答案 0 :(得分:2)
自动增量仅对将新行插入表格有影响。因此,您将三条记录插入到数据库中,它们将被分配ID为1,2和3.稍后您将删除ID 1,但ID 2和3的记录不会更改。这没有说明可能尝试引用数据库ID 1记录的任何服务器记录,尽管现在已经丢失了。
答案 1 :(得分:1)
但是我建议不要删除它们,只需添加一个列'status'并设置为0,意味着它们不再使用,以便在db中保留任何可能的记录。
答案 2 :(得分:0)
Servers.Datacenter也应该是一个INT,因为您将DataCenterID存储在此字段中。然后,当您从第二个表中删除一些数据中心时,什么都不会混淆。
答案 3 :(得分:0)
如果您按照建议的方式移除,则不会发生任何事情。每当添加新记录时,自动增量只会按顺序添加下一个最高数字,因此不会影响任何先前的记录。
希望有所帮助。