J'ai récemment vu un tweet affirmant que vous pouviez empêcher d'autres développeurs de lire un tableau en utilisant la fonction SELECT * FROM TableName
en construisant votre tableau de la manière suivante :
CREATE TABLE [TableName]
(
[ID] INT IDENTITY NOT NULL,
[Name] VARCHAR(50) NOT NULL,
[DontUseStar] AS (1 / 0)
);
Il est facile de voir que l'utilisation du SELECT *
ici, on essaierait de lire le nom de la colonne vide comme 1 divisé par 0 (ce qui provoquerait une erreur de division par zéro), mais sans qu'un type de données soit attribué à la colonne.
Pourquoi SQL vous permet-il de créer une colonne sans type de données assigné, avec un nom dont il sait qu'il sera illégal ?