欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sql基础_标准建表格式

程序员文章站 2022-04-02 16:13:26
...
-----------建表-----------------
IF OBJECT_ID ('SysUser', 'U') IS NULL
   BEGIN
      CREATE TABLE [dbo].[SysUser]
      (
         [Id]                     BIGINT IDENTITY (1, 1) NOT NULL, --主键用Id,整型,自增
         [Name]                   NVARCHAR (32) NOT NULL,
         [PhoneNumber]            NVARCHAR (32) NOT NULL,
         [Password]               NVARCHAR (128) NOT NULL,
         [UserName]               NVARCHAR (256) NOT NULL,
         [CreationTime]           DATETIME NOT NULL,
         [CreatorUserId]          BIGINT NULL,
         [LastLoginTime]          DATETIME NULL,
         [LastModificationTime]   DATETIME NULL,
         [LastModifierUserId]     BIGINT NULL,
         [IsDeleted]              BIT NOT NULL,
         [DeleterUserId]          BIGINT NULL,
         [DeletionTime]           DATETIME NULL,
         [IsActive]               BIT NOT NULL
      );

      --添加聚集索引,根据业务仔细设定
      CREATE CLUSTERED INDEX IX_SysUser_CreationTime
         ON SysUser (CreationTime);

      --添加非聚集索引
      CREATE NONCLUSTERED INDEX IX_SysUser_CreatorUserId
         ON SysUser (CreatorUserId);

      --添加默认值
      ALTER TABLE SysUser  ADD CONSTRAINT DF_SysUser_CreationTime DEFAULT GetDate() FOR CreationTime

      --添加主键
      ALTER TABLE SysUser ADD CONSTRAINT PK_SysUser   PRIMARY KEY (Id);
   END
GO

--主键用Id,整型,自增; 视业务用Int或者BigInt
--业务允许时,字段尽量设置为not null,null值用空字符串代替


-----------修改表------------------
--新增字段
If Col_Length('Bas_Student','id') Is Null
Begin
  Alter Table Bas_Student Add id Int IDENTITY(1,1) not Null
End
Go


--删除旧主键
IF EXISTS
     (SELECT *
      FROM   SYSINDEXES
      WHERE  NAME = 'PK_WMS_INV_MATERIALSTORER')
      ALTER TABLE Wms_Inv_MaterialStorer DROP CONSTRAINT PK_WMS_INV_MATERIALSTORER

--添加新主键
ALTER TABLE Wms_Inv_MaterialStorer
ADD CONSTRAINT PK_WMS_INV_MATERIALSTORER
PRIMARY KEY (CompanyID, StockID, StorerID, MaterialID, SizeID );

--添加唯一索引,来源单号
CREATE UNIQUE INDEX UI_EWS_Out_OrderMaster
  ON EWS_Out_OrderMaster(CompanyID, StockID, ExtTradeId)

-----------建视图-----------------
--删除对象
IF OBJECT_ID('vwStudent', 'V') IS NOT NULL
  DROP VIEW [vwStudent]
GO

--仓储作业往来单位
--Select * From vwStudent
CREATE VIEW [vwStudent]
AS
  SELECT CompanyID, StockID ConsigneeID, StockName AS ConsigneeName,
  CONVERT(INT, 1) AS ConsigneeType, Address, TelPhone
  FROM   Bas_Stock
 
GO

-----------对象是否存在判断-------------
--存储过程
IF OBJECT_ID('spWMS_XXXXX','P') IS NOT NULL 
  DROP PROCEDURE [dbo].[spWMS_XXXXX]
GO 

--视图
IF OBJECT_ID('vwWMS_XXXXX', 'V') IS NOT NULL 
  DROP VIEW [dbo].[vwWMS_XXXXX]
GO 

--临时表
IF OBJECT_ID('tempdb..#XXXXX') IS NOT NULL 
DROP TABLE #XXXXX

------------调试模版-----------------
BEGIN TRY
  BEGIN TRAN


  ROLLBACK TRAN
END TRY
BEGIN CATCH
  SELECT ERROR_MESSAGE();
  ROLLBACK TRAN
END CATCH

相关标签: SQL