我在数据库中创建了一个名为Media的表,我希望它只接受图像文件。它有两列:ImageID和Image。图像列的数据类型是varbinary。现在我想创建一个检查约束来检查文件扩展名,使列接受正确和特殊类型的文件。例如,我希望图像列只接受具有.jpg和.bmp等扩展名的文件。此外,我的表中没有扩展列来保留文件的扩展名。是否可以在没有用于保留文件名和扩展名的列的情况下进行检查? 谢谢(我使用的是sql server 2008)
答案 0 :(得分:0)
MSSQL无法知道varbinary列中的二进制数据代表什么,因此您无法直接在Image列上进行任何有用的检查。实际上,因为两个不同的应用程序可以用两种完全不同且有效的方式解释相同的字节序列,所以理论上它甚至都不可能。
显然,您可以使用CHECK约束添加文件名列和/或文件扩展名列,但这只是对文件名的检查,而不是对二进制内容的检查。上传文件的应用程序需要确保它确实是JPEG。
顺便说一下,既然你是在2008年,那么你应该查看FILESTREAM以了解它是否对你的应用程序有所帮助。